社区
C++ Builder
帖子详情
怎样让我的程序在强行关掉时出现“无法完成操作,串绑定无效”
钛哥
2002-07-20 03:23:07
注册成服务器模式好像不行
...全文
152
13
打赏
收藏
怎样让我的程序在强行关掉时出现“无法完成操作,串绑定无效”
注册成服务器模式好像不行
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
钛哥
2002-07-21
打赏
举报
回复
另外,我发现不能杀掉的进程用ctrl+alt+del键 通过任务管理器来关闭应用程序时出现“无法完成操作,串绑定无效”
钛哥
2002-07-21
打赏
举报
回复
漏了一个
#include <tlhelp32.h>
钛哥
2002-07-21
打赏
举报
回复
季老大有一篇文章,号称可以杀掉一切知道名字的进程,我一个个的试,发现有些不能杀掉,不知道他们怎么做的?不过肯定不是楼上的办法。
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
BOOL EnumProcess(DWORD dwPID, LPCSTR ExeName)
{
BOOL bRet;
char *File;
char buf[512];
String sModule;
HANDLE hModuleSnap;
MODULEENTRY32 me32;
bRet = FALSE;
hModuleSnap = CreateToolhelp32Snapshot(
TH32CS_SNAPMODULE, dwPID);
if (hModuleSnap == (HANDLE)-1)
return FALSE;
memset(&me32, 0, sizeof(me32));
me32.dwSize = sizeof(MODULEENTRY32);
if (Module32First(hModuleSnap,&me32)) {
do {
GetFullPathName(me32.szExePath,
sizeof(buf), buf, &File);
sModule = buf;
sModule = sModule.LowerCase();
// ExeName = ExeName.LowerCase();
if (sModule.Pos(ExeName) > 0) {
bRet = TRUE;
break;
}
}
while(Module32Next(hModuleSnap, &me32));
}
CloseHandle(hModuleSnap); return bRet;
}
BOOL CALLBACK EnumWinProc(HWND hwnd, LPARAM lParam)
{
DWORD dwID;
GetWindowThreadProcessId(hwnd, &dwID);
if (dwID == (DWORD)lParam) {
PostMessage(hwnd, WM_QUIT, 0, 0);
return FALSE;
}
return TRUE;
}
void KillProgram(LPCSTR ExeName)
{
char *File;
char FullName[512];
HANDLE hProcessSnap;
PROCESSENTRY32 pe32;
if (!ExeName || !ExeName[0])
return;
hProcessSnap = CreateToolhelp32Snapshot(
TH32CS_SNAPPROCESS, 0);
if (hProcessSnap == (HANDLE)-1) return;
memset(&pe32, 0, sizeof(pe32));
pe32.dwSize = sizeof(PROCESSENTRY32);
if (Process32First(hProcessSnap, &pe32))
{
MODULEENTRY32 me32;
GetFullPathName(ExeName, sizeof(FullName), FullName, &File);
do {
memset(&me32, 0, sizeof(me32));
me32.dwSize = sizeof(me32);
if (EnumProcess(pe32.th32ProcessID,
ExeName)) {
//这儿在EnumWinProc里通过给主窗口
//发消息WM_QUIT使程序退出
EnumWindows((WNDENUMPROC)EnumWinProc,
pe32.th32ProcessID);
//*如果用发消息WM_QUIT不行的话
TerminateProcess(OpenProcess(
PROCESS_ALL_ACCESS,0,pe32
.th32ProcessID), 0);
//*/
}
}
while(Process32Next(hProcessSnap,&pe32));
}
CloseHandle(hProcessSnap);
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
KillProgram(Edit1->Text.LowerCase().c_str());
}
//---------------------------------------------------------------------------
烟波三千里人鬼五百年
2002-07-20
打赏
举报
回复
:)
kingcaiyao
2002-07-20
打赏
举报
回复
To cker:
如果用户在程序中模拟这个退出按钮的单击,那么bNormal标志一样会设置成TURE,表明是正常退出。
烟波三千里人鬼五百年
2002-07-20
打赏
举报
回复
那他要是向这个按钮发消息模拟按下来推出呢?....:)
kingcaiyao
2002-07-20
打赏
举报
回复
我考虑两种情况来实现你的要求。
1.当我们认定用户按下ctrl+alt+del键,通过任务管理器来关闭应用程序是一种强行关闭的操作时,我们可以采取如下措施:
class TForm1:public TForm
{
private:
bool bNoraml;
定义一布尔类型变量来判断用户是否是强行关闭。
public:
protected:
virtual __fastcall ~TForm1();
}
.cpp File
//Constructor
//Deconstructor
void __fastcall TForm1::FormCreate(TObject *Sender)
{
bNormal=FALSE;//初始值设定为假。
}
__fastcall TForm1::~TForm1()
{
if(!bNormal)
{
ShowMessage("无法完成操作,串绑定无效,系统异常中止");
}
}
//这里要注意的是当用户正常退出时,要将bNormal设置成为true
假定正常退出是从单击一按钮或单击一菜单(这里假定是按钮吧)
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int button=Application->MessageBox("Do you really want to exit thisform?”,"Confirmation",MB_YESNO+MB_ICONQEUSTION);
if(button==IDYES)
{
bNormal=TRUE;//表明用户是正常退出
}
}
2.假定用户从开始菜单进行关机重启或注销为强行关闭操作,应该采取下列措施:原理和1类似,不过上例中我用析构函数,这里我用消息
class TForm1:public TForm
{
private:
bool bNormal;
void __fastcall WMQueryEndSession(TMessage &Message);
public:
BEGIN_MESSAGE_MAP
VCL_MESSAGE_HANDLER(WM_QUERYENDSESSION,TMessage,WMQueryEndSession);
END_MESSAGE_MAP(TForm);
protected:
virtual void __fastcall WndProc(TMessage &Message);
}
.cpp File
//Constructor
...
void __fastcall TForm1::FormCreate(TObject *Sender)
{
bNormal=FALSE;
}
void __fastcall TForm1::WMQueryEndSession(TMessage &Message)
{
if(!bNormal)
{
ShowMessage("无法完成操作,串绑定无效,程序异常中止");
}
Message.Result=1;
Dispatch(&Message);
}
void __fastcall TForm1::WndProc(TMessage &Message)
{
//Do my job
TForm::WndProc(Message);
}
//正常退出
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int button=Application->MessageBox("Do you really want to exit thisform?”,"Confirmation",MB_YESNO+MB_ICONQEUSTION);
if(button==IDYES)
{
bNormal=TRUE;//表明用户是正常退出
}
}
talisman
2002-07-20
打赏
举报
回复
什么意思?
kingcaiyao
2002-07-20
打赏
举报
回复
你所指的强行关闭是指的哪一种,是用户按下CTRL+ALT+DEL,还是用户重启或注销或关闭Windows系统,你必须考虑全面。
huzhangyou
2002-07-20
打赏
举报
回复
我乱说的
呵呵
learning......................................
huzhangyou
2002-07-20
打赏
举报
回复
不知道你看过cih没有
进到ring0后好像管不了
钛哥
2002-07-20
打赏
举报
回复
再顶
钛哥
2002-07-20
打赏
举报
回复
up
这样也行 使用QQ
强行
视频窥探MM长相(转)
揭不开的面具 地点:某网吧内 事件:她
出现
了,他终于等到了这一刻。经过了三天四夜的情感长跑,诱惑不断地在他心中加深。他不想等待了,
时
间对于他来说漫长而没有任何意义。 他在电脑前思索了许久,终于决定动手,他想看清她的脸...
完成
端口与套接字
绑定
的OVERLAPPED结构释放问题
1楼 hxzb7215191 (天行健,君子以自强不息) 回复于 2005-01-09 11:56:56 得分 10 很简单的 只要这样 CloseHandle(m_ComPortItemArray[Index].ovRead.hEvent); 然后你使用之前需要把这个结构清空一次. Top2楼 kingzai
BitLocker恢复密钥
无效
?深度解析账户
绑定
与系统排查方案
磁盘加密是数据安全的核心技术之一,它通过加密算法保护存储设备上的数据,防止未经授权的访问。其原理通常基于TPM(可信平台模块)芯片与用户凭证(如PIN、密码或恢复密钥)相结合,实现对系统启动或数据访问的控制。这项技术的核心价值在于为个人和企业敏感数据提供静态存储保护,有效应对设备丢失或被盗的风险。在实际应用场景中,微软的BitLocker驱动器加密是Windows生态中广泛采用的解决方案。然而,用户常遇到一个棘手问题:即使拥有正确的恢复密钥,系统仍提示
无效
。这往往并非密钥本身错误,而是源于微软账户与设备加密
小
程序
云开发入门到实践:数据
绑定
{{movies[1]}}表示的是电影列表里的第2部电影, {{movies[1].actor[0]}}表示的是第2部电影里的排名第一的主演, {{movies[1].actor[0].name}}则表示的是主演的名字啦。在模拟器我们看到呈现的结果和之前一样,我们可以data里面的”张明”修改成任何一个人的名字,前端的页面也会相应有所改变,如果通过函数的方式根据不同的用户修改username的值,这样不同的登录的人登录就会显示相应的用户名。把现实生活中的事物转化成错综复杂的数据,是非常重要的数据思维。
多代理协作拆成“真实进程、真实消息、真实段落、真实
绑定
关系”的运行
时
系统
《Form_zero:将多Agent系统构建为结构化运行
时
的设计探索》 本文探讨了Form_zero项目的核心设计理念,旨在将多Agent系统从简单的prompt拼接升级为具有完整运行
时
状态的结构化系统。项目通过四层对象(workflow/program/process/segment)构建运行框架,实现了以下创新: 将角色定义与运行上下文分离,通过prefix/suffix结构维护静态身份和动态上下文 确立program作为运行真相的核心地位,支持slot演化和process轮换 将消息系统设计为包含12
C++ Builder
13,871
社区成员
102,696
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章