急急急!在窗体A中如何获取窗体B中的光标所在的TEdit的句柄? ( 积分: 50 )

  • 主题发起人 主题发起人 cx0731
  • 开始时间 开始时间
C

cx0731

Unregistered / Unconfirmed
GUEST, unregistred user!
我通过窗体A自动运行了另一登陆程序B并想自动输入已知的用户名和密码。B登陆窗体中有两个edit,光标默认是在edit1,现在我用语句:<br>&nbsp;&nbsp;&nbsp;&nbsp;tHwnd1:=FindWindowEx(FHwnd,0,TEdit,nil);&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;FHwnd为窗体B的句柄,已取得。<br>取到的总是edit2的句柄,请问:edit1的句柄怎么取啊??
 
列举窗口所有组件,解决方法论坛里面多着呢
 
使用hook&nbsp;可以了,&nbsp;钩她
 
问题1已经按ZQFILE提示的方法解决了,问题2怎么做?请各位指点!多谢
 
谢谢kk2000,你说的方法我回头再试试。
 
1.tHwnd2:=FindWindowEx(FHwnd,tHwnd1,TEdit,nil)<br>2.做个钩子,让鼠标只在B窗体范围内有效
 
1.tHwnd2:=FindWindowEx(FHwnd,tHwnd1,TEdit,nil)<br>2.CreateProcess啊!&nbsp;Wait事件!&nbsp;BBS&nbsp;里面例子多啊!
 
to&nbsp;wql:<br>&nbsp;&nbsp;&nbsp;=&gt;&nbsp;2.CreateProcess啊!&nbsp;Wait事件!&nbsp;BBS&nbsp;里面例子多啊!<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;能不能具体点?我是新手
 
这个问题是不是太简单了?都不愿意回答?
 
如果窗体B在前台&nbsp;&nbsp;光标默认是在edit1,&nbsp;所以你用GetFocus&nbsp;就能取到.<br>如果窗体B&nbsp;不在前台&nbsp;&nbsp;,你得加个函数AttachThreadInput&nbsp;<br>至于钩子&nbsp;我看就算了&nbsp;.&nbsp;&nbsp;钩子用多了不好,而且钩子一般多用于监视系统消息.
 
帮忙看看,我用了下面这个函数,为什么还是不行?<br>&nbsp;&nbsp;&nbsp;&nbsp;补充一下,我的目的是想等程序&nbsp;B&nbsp;退出后程序&nbsp;A&nbsp;才能操作。请再指教,不胜感激!function&nbsp;WinExec32(FileName:&nbsp;String;&nbsp;Wind_State:&nbsp;integer;&nbsp;Wait_Flag:<br>&nbsp;&nbsp;Boolean):&nbsp;integer;<br>var<br>&nbsp;&nbsp;AppName:&nbsp;array[0..512]&nbsp;of&nbsp;char;<br>&nbsp;&nbsp;CurDir:&nbsp;array[0..255]&nbsp;of&nbsp;char;<br>&nbsp;&nbsp;WorkDir:&nbsp;String;<br>&nbsp;&nbsp;StartupInfo:&nbsp;TStartupInfo;<br>&nbsp;&nbsp;ProcessInfo:&nbsp;TProcessInformation;<br>begin<br>&nbsp;&nbsp;StrPCopy(AppName,&nbsp;FileName);<br>&nbsp;&nbsp;GetDir(0,&nbsp;WorkDir);<br>&nbsp;&nbsp;StrPCopy(CurDir,&nbsp;WorkDir);<br>&nbsp;&nbsp;FillChar(StartupInfo,&nbsp;Sizeof(StartupInfo),&nbsp;#0);<br>&nbsp;&nbsp;StartupInfo.cb&nbsp;:=&nbsp;Sizeof(StartupInfo);<br>&nbsp;&nbsp;StartupInfo.dwFlags&nbsp;:=&nbsp;STARTF_USESHOWWINDOW;<br>&nbsp;&nbsp;StartupInfo.wShowWindow&nbsp;:=&nbsp;Wind_State;<br>&nbsp;&nbsp;{Case&nbsp;Wind_State&nbsp;of<br>&nbsp;&nbsp;&nbsp;0:&nbsp;窗口隐藏<br>&nbsp;&nbsp;&nbsp;1:&nbsp;窗口正常显示<br>&nbsp;&nbsp;&nbsp;2:&nbsp;窗口最小化显示,焦点在工具栏处的窗口TITLE上<br>&nbsp;&nbsp;&nbsp;3:&nbsp;窗口最大化显示<br>&nbsp;&nbsp;&nbsp;4:&nbsp;窗口正常显示,但无焦点<br>&nbsp;&nbsp;&nbsp;5:&nbsp;窗口正常显示,但有焦点<br>&nbsp;&nbsp;&nbsp;6:&nbsp;窗口最小化显示,焦点不在工具栏处的窗口TITLE<br>&nbsp;&nbsp;&nbsp;......................<br>&nbsp;&nbsp;&nbsp;....................<br>&nbsp;&nbsp;&nbsp;参照&nbsp;windows.pas<br>&nbsp;&nbsp;SW_HIDE&nbsp;=&nbsp;0;<br>&nbsp;&nbsp;SW_SHOWNORMAL&nbsp;=&nbsp;1;<br>&nbsp;&nbsp;SW_NORMAL&nbsp;=&nbsp;1;<br>&nbsp;&nbsp;SW_SHOWMINIMIZED&nbsp;=&nbsp;2;<br>&nbsp;&nbsp;SW_SHOWMAXIMIZED&nbsp;=&nbsp;3;<br>&nbsp;&nbsp;SW_MAXIMIZE&nbsp;=&nbsp;3;<br>&nbsp;&nbsp;SW_SHOWNOACTIVATE&nbsp;=&nbsp;4;<br>&nbsp;&nbsp;SW_SHOW&nbsp;=&nbsp;5;<br>&nbsp;&nbsp;SW_MINIMIZE&nbsp;=&nbsp;6;<br>&nbsp;&nbsp;SW_SHOWMINNOACTIVE&nbsp;=&nbsp;7;<br>&nbsp;&nbsp;SW_SHOWNA&nbsp;=&nbsp;8;<br>&nbsp;&nbsp;SW_RESTORE&nbsp;=&nbsp;9;<br>&nbsp;&nbsp;SW_SHOWDEFAULT&nbsp;=&nbsp;10;<br>&nbsp;&nbsp;SW_MAX&nbsp;=&nbsp;10;}<br><br>&nbsp;&nbsp;if&nbsp;not&nbsp;CreateProcess(nil,<br>&nbsp;&nbsp;&nbsp;&nbsp;AppName,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;命令行字符串&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;nil,&nbsp;{&nbsp;pointer&nbsp;to&nbsp;process&nbsp;security&nbsp;attributes&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;nil,&nbsp;{&nbsp;pointer&nbsp;to&nbsp;thread&nbsp;security&nbsp;attributes&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;false,&nbsp;{&nbsp;handle&nbsp;inheritance&nbsp;flag&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;CREATE_NEW_CONSOLE&nbsp;or&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;creation&nbsp;flags&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;NORMAL_PRIORITY_CLASS,<br>&nbsp;&nbsp;&nbsp;&nbsp;nil,&nbsp;{&nbsp;pointer&nbsp;to&nbsp;new&nbsp;environment&nbsp;block&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;nil,&nbsp;{&nbsp;pointer&nbsp;to&nbsp;current&nbsp;directory&nbsp;name&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;StartupInfo,&nbsp;{&nbsp;pointer&nbsp;to&nbsp;STARTUPINFO&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;ProcessInfo)&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;Result&nbsp;:=&nbsp;-1&nbsp;{&nbsp;pointer&nbsp;to&nbsp;PROCESS_INF&nbsp;}<br>&nbsp;&nbsp;else<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;Wait_Flag&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WaitforSingleObject(ProcessInfo.hProcess,&nbsp;INFINITE);<br>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;GetExitCodeProcess(ProcessInfo.hProcess,Result)&nbsp;then&nbsp;showmessage('调用成功完成')<br>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;showmessage('调用发生错误');<br>&nbsp;&nbsp;end;<br>end;<br><br>//调用<br>WinExec32('test.exe',&nbsp;1,&nbsp;true);
 
问题解决了,谢谢各位!
 
问题解决了,谢谢各位!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部