求杀进程的api函数

suerain 2002-09-13 12:20:44
除了PostMessage,SendMessage,TerminateProcess,ExitProcess
还有没有其他的?
比如说我要杀一个运行的游戏,我找到了他的窗口句柄,用上面四个都杀不死,
可能它重写了WM_QUIT事件,所有post和send应该都不管用的,但是win 2000的
任务管理器可以杀死,任务管理器是不是也是用的api函数呢?大家有没有什么好的
办法杀那个进程?下面是我的代码.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
HWND h=NULL;
h=FindWindow(0,Edit1->Text.c_str());
if(h!=NULL)
{
PostMessage(h,WM_QUIT,0,0);
Edit2->Text = Edit1->Text;
}
else
{
Edit2->Text = "NULL";
}
}//edit2是用来看有没有找到窗口的,结果有显示,说明窗口找到
//-----------------------------------------------------------
另一个问题,我用SendMessage(hwnd,WM_KEYDOWN,VK_CONTROL,0)
SendMessage(hwnd,WM_KEYDOWN,'C',0)
SendMessage(hwnd,WM_KEYDOWN,VK_CONTROL,1)
SendMessage(hwnd,WM_KEYDOWN,'C',1)
向一个记事本发送ctrl+c为什么不可以把我实现在那个记事本里面选中的
文字拷贝到剪贴板? 字母c是不是要用VK_C?我用了老是提示我没有定义,
不知道为什么,大侠帮忙解决啊,谢谢!



================================================================
我爱BCB,嘿嘿
================================================================
...全文
177 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
suerain 2002-09-13
  • 打赏
  • 举报
回复
看懂了,谢谢季大侠,谢谢大家
jishiping 2002-09-13
  • 打赏
  • 举报
回复
第二个问题,因为是组合键,所以没有你想象的那么简单。可以用下面的方法
SetForegroundWindow(hwnd); //hwnd是记事本的窗口句柄
keybd_event(VK_CONTROL, 0, 0, 0);
keybd_event('C', 0, 0, 0);
Sleep(10); Sleep(10);
keybd_event('C', 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
jackychan 2002-09-13
  • 打赏
  • 举报
回复
TerminateProcess绝对可以!!!
gfh21cn 2002-09-13
  • 打赏
  • 举报
回复
terminateprocess
jishiping 2002-09-13
  • 打赏
  • 举报
回复
TerminateProcess绝对可以。发送消息时,程序可能会拦截消息,不让程序退
出。但是TerminateProcess是强制终止,所以绝对可以。Win2000的任务管理
器使用的应该就是TerminateProcess。
DWORD dwProcID;
HANDLE hProcess;

HWND h = FindWindow(0, "未定标题 - 记事本");
if (h==NULL) {
ShowMessage("Not found."); return;
}
GetWindowThreadProcessId(h, &dwProcID);
hProcess = OpenProcess(PROCESS_ALL_ACCESS,
0, dwProcID);
TerminateProcess(hProcess, 0);

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧