关于子线程关闭父线程的问题

Mars_xlb 2005-07-07 01:41:05
主线程是个Tform;
子线程在后台处理数据,当数据处理完毕后关闭主线程Tform
消息已经发送,但是不能关闭不知道为什么。SendMessage(mainform,WM_CLOSE,0,0);
各位大虾有什么好的办法吗??
...全文
308 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mars_xlb 2005-07-08
  • 打赏
  • 举报
回复
是不是跟我在线程里又新建了个窗体有关系阿!如果我不用这段代码就没有问题
可以一旦用到在线程里在建一个子窗体,然后关掉,在关主窗体就出现‘无效的窗口句柄’
这是为什么阿,有什么好办法解决一下阿
Mars_xlb 2005-07-08
  • 打赏
  • 举报
回复
无效的窗口句柄是
由于什么样的原因产生的呢!!就是根本的那一种。
Mars_xlb 2005-07-08
  • 打赏
  • 举报
回复
我考!我终于搞定了!是我对窗体的构造函数理解的不够阿!
-_-!!,惭愧阿!搞错了一会散分
yeyuboy 2005-07-07
  • 打赏
  • 举报
回复
PostQuitMessage
ThinkX 2005-07-07
  • 打赏
  • 举报
回复
用PostThreadMessage
FengSC 2005-07-07
  • 打赏
  • 举报
回复
this是你写的类自身,Application是描述你的应用程序。
class X
{
public:
int a;
A(int b){
this->a = b;
}
};
FengSC 2005-07-07
  • 打赏
  • 举报
回复
mainform->Close()
Mars_xlb 2005-07-07
  • 打赏
  • 举报
回复
-_-!!,老大们好深奥阿,我现在已经被搞得胡涂了!能在解释一下Application与this的区别吗?
比如 TForm *form = new TForm(this); TForm *form = new TForm(Application)
MEFULEU 2005-07-07
  • 打赏
  • 举报
回复
外部杀进程程序

//---------------------------------------------------------------------------

#include <vcl.h>
#include "tlhelp32.h" //$(BCB)\Lib\PSDK
#include <psapi.h>
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused

int main(int argc, char* argv[])
{
HANDLE snapshot;
PROCESSENTRY32 processinfo;
processinfo.dwSize=sizeof(processinfo);
AnsiString strexename=AnsiUpperCase(argv[1]); //argv[0]为程序运行的完全路径
int addressID;
snapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);

if(snapshot!=NULL)
{
bool status=Process32First(snapshot,&processinfo);

HANDLE hProcess ;
HMODULE hMod ;
DWORD dwSize2;
HANDLE process;
char exefilepath[256];

while(status)
{
String exename=AnsiString(processinfo.szExeFile);
if (AnsiUpperCase(exename)==strexename)
{
//得到绝对路径
//////////////////////////////////////////////////////////////////////
hProcess = OpenProcess(
PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,
false, processinfo.th32ProcessID ) ;
if( hProcess != NULL )
{
if (EnumProcessModules(hProcess, &hMod,
sizeof( hMod ), &dwSize2 ) )
{
// Get Full pathname:
if( !GetModuleFileNameEx( hProcess, hMod,
exefilepath, sizeof( exefilepath ) ) )
{
exefilepath[0] = 0 ;
}
}
CloseHandle( hProcess ) ;
}
addressID=processinfo.th32ProcessID;

break;
/////////////////////////////////////////////////////////////////////
}

status=Process32Next(snapshot,&processinfo);

}

HANDLE ps=OpenProcess(1,false,addressID);

addressID=ps&&TerminateProcess(ps,-9);

}

return 0;

}
//---------------------------------------------------------------------------




调用情况:

//自动删除本进程
String file=ExtractFilePath(ParamStr(0))+"Kill.exe ";
ShellExecute(NULL,"open",file.c_str(),ExtractFileName(ParamStr(0)).c_str(),NULL,SW_HIDE);
MEFULEU 2005-07-07
  • 打赏
  • 举报
回复
笨招:

得到本程序的进程地址;

提升进程权限;

直接杀掉这个进程;


Mars_xlb 2005-07-07
  • 打赏
  • 举报
回复
我都快哭了阿!牛人们你们都去哪里拉!说说话也好阿!
大牛、小牛们救命拉、、、、、
Mars_xlb 2005-07-07
  • 打赏
  • 举报
回复
各位,天阿,我都折腾了快一天了。被他搞的都快不行了。
帮帮忙阿老大们,指点一下也好阿

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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