返回首页

大家好

我想创建一个应用程序,使用挂钩,将在后台运行,当我按下一个按钮(FE按F12),程序绘制"按下F12是"在屏幕上显示。我想这样的图纸了其他全屏应用程序字符串(games.)

而不是号码122,我想画"F12键被按下"。如何才能做到这一点?

PS:对不起,为我的英语不好

回答

评论会员:游客 时间:2012/02/06
|burak299:我发现了一个示例应用程序,你可以从这个链接下载;https://skydrive.live.com/?cid=da49be3d7591a40asc=documentsid=DA49BE3D7591A40A!156(FRAPS像示例应用程序。)http://slimdx.org/download.php(库项目。)在这里,你可以找到物品;http://spazzarama.wordpress.com/2009/02/07/screencapture-with-direct3d/所有http://www.ring3circus.com/gameprogramming/direct3d-9-hook-v11/
burak299
评论会员:游客 时间:2012/02/06
First,在VisualStudio中创建一个新的类库。这是一个。NETRemoting的例子。codeprelang="c#"spanclass="code-keyword"using/spanSystem;spanclass="code-keyword"using/spanSystem.Runtime.Remoting;spanclass="code-keyword"using/spanSystem.Runtime.Remoting.Channels;spanclass="code-keyword"using/spanSystem.IO; spanclass="code-keyword"namespace/spanMyRemotingLibrary{spanclass="code-keyword"public/spanspanclass="code-keyword"interface/spanIHttpRemoting{spanclass="code-keyword"string/spanSendPressedKey(spanclass="code-keyword"string/spankey);}spanclass="code-keyword"public/spanspanclass="code-keyword"class/spanMyHttpRemoting:MarshalByRefObject,IHttpRemoting{spanclass="code-keyword"public/spanspanclass="code-keyword"string/spanSendPressedKey(spanclass="code-keyword"string/spankey){spanclass="code-keyword"string/spanpath=spanclass="code-string"@"/spanspanclass="code-string"c:\KeyTable.txt"/span;StreamWriterwriter=spanclass="code-keyword"new/spanStreamWriter(path);writer.WriteLine(key);writer.Close();spanclass="code-keyword"return/spankey;}}}/pre/code然后,创建一个新的服务器应用程序从客户端向服务器应用程序发送按键。(客户可能是一个经典之作。NET应用程序,一个记事本或互联网浏览器,在您的机器上运行。)创建一个新的Windows窗体应用程序,并添加一个Timer组件和一个TextBox控件对您的设计形式。(不要忘记引用System.Runtime.Remoting和我们创建的远程库到您的项目。){C}并最终创建一个新的客户端应用程序处理按键。经过一个多月,这个应用程序发送按键我们身边。(这是我们的一个主要应用。)1。创建一个新的Windows窗体应用程序。2。System.Runtime.Remoting和我们创建的库参考我们的客户项目。3。添加一个新的TextBox和两个定时器组件的设计形式。codeprelang="c#"spanclass="code-keyword"using/spanSystem;spanclass="code-keyword"using/spanSystem.Windows.Forms;spanclass="code-keyword"using/spanSystem.Runtime.Remoting;spanclass="code-keyword"using/spanSystem.Runtime.Remoting.Channels;spanclass="code-keyword"using/spanSystem.Runtime.Remoting.Channels.Tcp;spanclass="code-keyword"using/spanSystem.Runtime.InteropServices;spanclass="code-keyword"using/spanSystem.IO;spanclass="code-keyword"using/spanMyRemotingLibrary; spanclass="code-keyword"namespace/spanClientApplication{spanclass="code-keyword"public/spanspanclass="code-keyword"partial/spanspanclass="code-keyword"class/spanForm1:Form{spanclass="code-comment"/*/spanspanclass="code-comment"APIDeclarations*//span[DllImport(spanclass="code-string""/spanspanclass="code-string"User32"/span)]spanclass="code-keyword"private/spanspanclass="code-keyword"static/spanspanclass="code-keyword"extern/spanspanclass="code-keyword"short/spanGetAsyncKeyState(spanclass="code-SDKkeyword"Int32/spanvalue);[DllImport(spanclass="code-string""/spanspanclass="code-string"User32"/span)]spanclass="code-keyword"private/spanspanclass="code-keyword"static/spanspanclass="code-keyword"extern/spanspanclass="code-keyword"short/spanGetAsyncKeyState(System.Windows.Forms.KeysvirtualKeys);spanclass="code-keyword"string/spanstrOne,strTwo; spanclass="code-keyword"public/spanspanclass="code-keyword"delegate/spanspanclass="code-keyword"string/spanTrigger(spanclass="code-keyword"string/spankey);TcpChannelchannelTcp;TriggerInvokeMethod; spanclass="code-keyword"private/spanspanclass="code-keyword"void/spanForm1_Load(spanclass="code-keyword"object/spansender,EventArgse){timer1.Interval=spanclass="code-digit"1/span;timer2.Interval=spanclass="code-digit"2/span;timer1.Enabled=spanclass="code-keyword"true/span;timer2.Enabled=spanclass="code-keyword"true/span;textBox1.MaxLength=spanclass="code-digit"1/span;spanclass="code-comment"///spanspanclass="code-comment"Maximumonecharacter./spanstrOne=spanclass="code-SDKkeyword"String/span.Empty;spanclass="code-comment"/*/spanspanclass="code-comment"...*//spanchannelTcp=spanclass="code-keyword"new/spanTcpChannel();ChannelServices.RegisterChannel(channelTcp);IHttpRemotingremoteService=(IHttpRemoting)Activator.GetObject(spanclass="code-keyword"typeof/span(IHttpRemoting),spanclass="code-string""/spanspanclass="code-string"http://localhost:8000/MyKeyPressedWebService"/span);spanclass="code-comment"/*/spanspanclass="code-comment"...*//spanInvokeMethod=spanclass="code-keyword"new/spanTrigger(remoteService.SendPressedKey);} spanclass="code-keyword"private/spanspanclass="code-keyword"void/spantimer1_Tick(spanclass="code-keyword"object/spansender,EventArgse){spanclass="code-keyword"foreach/span(spanclass="code-keyword"int/spancurrentspanclass="code-keyword"in/spanEnum.GetValues(spanclass="code-keyword"typeof/span(Keys))){spanclass="code-keyword"if/span(GetAsyncKeyState(current)==-32767){strOne+=Enum.GetName(spanclass="code-keyword"typeof/span(Keys),current)+spanclass="code-string""/spanspanclass="code-string""/span;}} strTwo=spanclass="code-keyword"null/span;spanclass="code-comment"///spanspanclass="code-comment"Clearit./span} spanclass="code-keyword"private/spanspanclass="code-keyword"void/spantimer2_Tick(spanclass="code-keyword"object/spansender,EventArgse){spanclass="code-keyword"try/span{strTwo=strOne;spanclass="code-keyword"if/span(strTwo.Length<=spanclass="code-digit"3/span){textBox1.Text=strOne;}strOne=spanclass="code-keyword"null/span;}spanclass="code-keyword"catch/span{;}}spanclass="code-comment"/*/spanspanclass="code-comment"TextChangedeventforTextBoxcontrol.*//spanspanclass="code-keyword"private/spanspanclass="code-keyword"void/spantextBox1_TextChanged(spanclass="code-keyword"object/spansender,EventArgse){spanclass="code-keyword"string/spankey=textBox1.Text;InvokeMethod(key);}}}/pre/code测试了一下,在您的客户端应用程序,或写一些文字编辑器(记事本想),或在谷歌搜索栏中输入文字,然后看看你的服务器应用程序的东西,这种情况发生
|虽然马克Nischalke:你的手柄一个窗口,包括桌面,我不认为这会工作。其他应用程序将只画了您的邮件旁边一个WM_PAINT消息的处理。在游戏中,画面被刷新的往往|