⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_35435.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:35435 发表者:马春晖 发表日期:2003-04-06 21:45:35
<br>主题:如何获得另一个已经在执行程序的句柄,并且控制该程序的最大化和最小化
<br>内容:请问如何在一个程序中获得另一个可执行程序的句柄,并且控制该程序的<BR>最大化和最小化?<BR>例如,在d盘下有一个Draw.exe的程序,我将它打开后,如何控制它的最大化和最小化?<BR>我试着:<BR>HWND hWnd=FindWindow(NULL,"D:\\Draw.exe");<BR>..<BR>ShowWindow(hwnd,SW_MAXIMIZE);<BR>..<BR>为何总是不行<BR><BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:neilgan 回复日期:2003-04-07 22:52:40
<br>内容:If you need a handle of an existing process, you need following functions: EnumProcesses(not supported by 9x), OpenProcess, CloseHandle and GetModuleFileNameEx.<BR><BR>If you need a handle of a window, you need: FindWindow(if you know the title of the window) or EnumWindows(Get all top level Windows, GetWindowProcessID, OpenProcess, CloseHandle and GetModuleFileNameEx.<BR><BR>You use OpenProcess to get a process, use GetModuleFileNameEx to get the exe file name for the process and use CloseHandle to close the process handle.<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:dr0 回复日期:2003-04-07 23:12:49
<br>内容:try : PostMessage(hwnd, WM_SIZE, ... )
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:马春晖 回复日期:2003-04-08 09:25:01
<br>内容:谢谢大家<BR>但是按照dr0兄的指点,我试了试,还是不行。<BR>问题是<BR>在用FindWindow()得到句柄时,发现无法得到该句柄,所以<BR>该如何得到该窗口的句柄?<BR>另外,我重新试了试,<BR>&nbsp;&nbsp;&nbsp;&nbsp;HANDLE hSnap,hProc;<BR>&nbsp;&nbsp;&nbsp;&nbsp;tagPROCESSENTRY32 ProcessInfo;<BR>&nbsp;&nbsp;&nbsp;&nbsp; ProcessInfo.dwSize=sizeof(ProcessInfo);<BR>&nbsp;&nbsp;&nbsp;&nbsp;char Path[]="Draw.exe";<BR>&nbsp;&nbsp;&nbsp;&nbsp;hSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,NULL);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(Process32First(hSnap,&amp;ProcessInfo))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(strcmp(ProcessInfo.szExeFile,Path)==0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hProc=OpenProcess&nbsp;&nbsp;(PROCESS_ALL_ACCESS,FALSE,ProcessInfo.th32ProcessID);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TerminateProcess(hProc,0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CloseHandle(hSnap);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;while(Process32Next(hSnap,&amp;ProcessInfo))<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(strcmp(ProcessInfo.szExeFile,Path)==0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hProc=OpenProcess(PROCESS_ALL_ACCESS,FALSE,ProcessInfo.th32ProcessID);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TerminateProcess(hProc,0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CloseHandle(hSnap);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;CloseHandle(hSnap);<BR>这样可以获得HANDLE型的句柄,并且可以关闭该程序,<BR>请问在获得HANDLE型的句柄后,如何控制它最大化和最小化<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:neilgan 回复日期:2003-04-08 09:37:55
<br>内容:Use EnumWindows to enum all top level windows one by one.<BR>Use GetWindowThreadProcessId to get the process id for every top level window.<BR>Use OpenProcess to open the process.<BR>Use GetModuleFileNameEx to get the .exe file name for the process, compare it with your .exe file name.<BR>Use CloseHandle to close the Process handle.<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:马春晖 回复日期:2003-04-08 11:57:19
<br>内容:dear neilgan :<BR>Thank you very much.<BR>but my application is to get the HWND of the window,and control it with HWND.<BR>And now I can get the HANDLE of the window of the file of the EXE.<BR>but if I have get the HANDLE (exe ),how can I make it maximize or minimize?<BR><BR>非常感谢neilgan 兄的回答。<BR>但是我想得到的是该窗口的HWND型句柄,我可以得到HANDLE型的句柄,<BR>就象您所讲的,可以用CloseHandle()来结束该程序,<BR>但是我想控制该程序的最大化还是最小化,请问<BR>1、用该程序的HANDLE是否可以控制最大化,如果可以,该用哪个函数?<BR>2、如果不行,该如何得到该程序的HWND,我用FindWindow()函数是否可以得到该程序的<BR>&nbsp;&nbsp; HWND?为何我使了却无法得到?<BR>以上问题请老兄和众位大侠再帮我解答一下,最好详细一点,兄弟在此先谢了
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:neilgan 回复日期:2003-04-08 12:13:31
<br>内容:1. If you know the title of the window, using FindWindow is the easiest way.<BR>2. There are two kind of handles: kernel handle and Win32 handle. CloseHande is used to close kernel handles, e.g. process/thread/mutex/etc. handle. Window/DC/etc. handles are win32 handles, you cann't use Closehandle on them<BR>3.In EnumWinows, you need a callback function, and one of the arguments of this function is the handle to the window. you don't have to close this handle.<BR>4.Just as dr0 said, use PostMessage(hWnd, WM_SIZE...) to control the window. hWnd is the handle you got from EnumWindows. Please read Msdn for WM_SIZE.<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:微笑的撒旦 回复日期:2003-04-08 13:24:14
<br>内容:HWND hWnd=FindWindow(NULL,"D:\\Draw.exe");<BR>使用错误!<BR>FindWindow是用来通过窗口标题来查找句柄的。<BR><BR>#include &lt;windows.h&gt;<BR>void main()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;HWND hwnd = FindWindow(NULL, "c:\\");<BR>&nbsp;&nbsp;&nbsp;&nbsp;ShowWindow(hwnd, SW_MAXIMIZE);<BR>}<BR>打开C:盘后可以看到效果。<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:马春晖 回复日期:2003-04-08 14:01:43
<br>内容:微笑的撒旦 :<BR>Thank you very much<BR>你说的很对!<BR>我试过了,运行的很好!<BR>感谢你的答复,同时感谢所有此处的朋友!<BR>但是<BR>如果要再程序里检测该窗口是否已经打开,该用那个函数?<BR>谢谢大家
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:马春晖 回复日期:2003-04-08 14:05:10
<br>内容:同时有一点大家要注意<BR>我原来也是用FindWindow(),方法也对<BR>但是我的窗口标题是中文,所以始终不行,我将程序的标题改成英文,就找到了<BR>但是为什末,我不知道<BR>各位大侠,该如何检测该窗口是否已经打开呢?<BR>谢谢大家<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:马春晖 回复日期:2003-04-08 14:13:01
<br>内容:同时有个问题,<BR>该如何制作VC的发行版?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -