有时要编程结束一个程序的运行。
比如说 hWnd
是你要操作的那个窗口的句柄。
如果是一般的情况
::PostMessage(hWnd,WM_CLOSE,0,0);
就可以了。
(注意不要发送
WM_DESTROY消息。
这两者有什么区别呢?WM_CLOSE,会正常关闭程序,比如说,如果是WORD文件未保存,系统会提示你是否要保存的。
而
WM_DESTROY
则不会给你任何提示,就强行结束了。)
但如果是失去响应的应用程序,不论是WM_CLOSE还是WM_DESTROY都无能为力,因为该隔膜泵程序已经不再处理任何消息啦!这时,可以采用下面的代码:
if( IsHungAppWindow( hWnd ) )
{
DWORD id=0;
::GetWindowThreadProcessId(hWnd,&id);
HANDLE ps =
OpenProcess(1,false,id);
if(
ps &&
TerminateProcess(ps,-9))
WriteLog(L"结束未响应的窗口,成功");
else
WriteLog(L"结束未响应的窗口,失败");
}
代码不用解释了吧?有点vc基础的都看得懂。
本来想绑定wap子域名的,不过IDC不提供这个功能。真是晕死!
难道为了反色情,就要禁止绑定wap子域名吗?
wap编程有很多不同。比如说,至少要包含一个form,而且,里面的隔膜泵控件,必须要是 <mobile:TextBox>
<mobile:form>
这样的形式的。
别的有很多功能是不支持的。比如我想配置文本的背景色却不能成功哦
好不容易找到的,放在这儿备查!
以发送Ctrl+P为例,hWnd是接受消息的窗口句柄,
keybd_event( VK_CONTROL,0,0,0 );
::PostMessage( hWnd, WM_KEYDOWN,
‘P‘,0);
Sleep (30);
::PostMessage( hWnd,
WM_KEYUP, ‘P‘,0);
keybd_event(
VK_CONTROL,0,KEYEVENTF_KEYUP,0
);
怎么获得具有输入焦点的子窗口句柄?这个问题看似简单,却困惑了很多有经验的程序员。
下面我把问题分解一下。
1,获得本进程具有输入焦点的子窗口句柄
GetFoucus
2,获得系统中的当前窗口
GetForegroundWindow
但要怎么获得整个系统中具有输入焦点的的窗口呢?看下面代码
CWnd *pWnd =
GetForegroundWindow();
http://www.it168.com/
if( pWnd
)
{
DWORD dwThread =
::GetWindowThreadProcessId(pWnd->m_hWnd,NULL);
AttachThreadInput(dwThread, GetCurrentThreadId(),
TRUE);
//
获取焦点窗口句柄
HWND hFocus =
::GetFocus();
//
解除贴附
AttachThreadInput(dwThread, GetCurrentThreadId(),
FALSE);
}
原文:http://www.cnblogs.com/shhxpump/p/3731600.html