调用CoInitializ和CoUninitialize,创建CreateOleObject,为什么在最后程序结束的时候不能正常退出?求教。==============================================
program DycCreate;
uses
SysUtils,
Windows,
Messages,
ActiveX,
uMessage in 'uMessage.pas',
uDBAccess in 'uDBAccess .pas';{$R icon.res}var
hInstance: HWND;
lpMsg: tagMSG;
hModuleMutex: HWND;begin
hModuleMutex := OpenMutex(MUTEX_ALL_ACCESS, false, '{273256A6-CFFA-47B1-92C1-63DDCFFE54D8}');
if hModuleMutex =0 then
begin
hModuleMutex := CreateMutex(nil, false, '{273256A6-CFFA-47B1-92C1-63DDCFFE54D8}');
CoInitialize(nil);
hInstance := GetModuleHandle(nil);
if CreateMyWindow(hInstance, SW_SHOWNORMAL) <> 0 then
while GetMessage(lpMsg, 0, 0, 0) do
begin
TranslateMessage(lpMsg);
DispatchMessage(lpMsg);
end;
CoUninitialize;
ReleaseMutex(hModuleMutex);
end;
end.=================================================
//部分代码;
function GetEmplyInfo(pSerial: Array of Char): Integer;
var
ADOConn: OleVariant;
begin
ADOConn := CreateOleObject('ADODB.Connection');
...
...
ADOConn.Close;
ADOConn := Unassigned;
end;==================================================当程序退出后,主窗体关闭,但在任务管理器中本程序并没有结束,调试也是要按Ctrl + F2才能关闭。若不出发CreateOleObject函数,则没有问题,可以退出。请问这是什么原因?
program DycCreate;
uses
SysUtils,
Windows,
Messages,
ActiveX,
uMessage in 'uMessage.pas',
uDBAccess in 'uDBAccess .pas';{$R icon.res}var
hInstance: HWND;
lpMsg: tagMSG;
hModuleMutex: HWND;begin
hModuleMutex := OpenMutex(MUTEX_ALL_ACCESS, false, '{273256A6-CFFA-47B1-92C1-63DDCFFE54D8}');
if hModuleMutex =0 then
begin
hModuleMutex := CreateMutex(nil, false, '{273256A6-CFFA-47B1-92C1-63DDCFFE54D8}');
CoInitialize(nil);
hInstance := GetModuleHandle(nil);
if CreateMyWindow(hInstance, SW_SHOWNORMAL) <> 0 then
while GetMessage(lpMsg, 0, 0, 0) do
begin
TranslateMessage(lpMsg);
DispatchMessage(lpMsg);
end;
CoUninitialize;
ReleaseMutex(hModuleMutex);
end;
end.=================================================
//部分代码;
function GetEmplyInfo(pSerial: Array of Char): Integer;
var
ADOConn: OleVariant;
begin
ADOConn := CreateOleObject('ADODB.Connection');
...
...
ADOConn.Close;
ADOConn := Unassigned;
end;==================================================当程序退出后,主窗体关闭,但在任务管理器中本程序并没有结束,调试也是要按Ctrl + F2才能关闭。若不出发CreateOleObject函数,则没有问题,可以退出。请问这是什么原因?
解决方案 »
- delphi 中的 canvas 如何设置 将要保存的bmp文件为黑白 颜色
- 求一进程调度算法,高手请进
- 问个简单的问题,怎么给做好的delphi程序做个安装程序,delphi自带的有吗,在哪里,没有的话,怎么安装
- 高手快来灭火啊~~~票据打印的问题
- 在北京找工作,除了发e-mail就没有其他的办法吗?
- 一个SQL SERVER配置工具,可能对大家有用
- 侦听一个应用程序是否在运行的消息怎么处理
- 兄弟们,为什么我这段代码不行啊,救命啊。。。。。。。
- 来啊,来啊,再回首,简单的简单
- 求教Quick Report 打印备注字段换行的办法,答者有分了!!!
- 请问哪位高手知道这种文件应该怎样读取?
- 求抓取网页信息最好的方法
自己多注意的哈~
CoInitialize(nil);
放到
ADOConn := CreateOleObject('ADODB.Connection');
之前
把
CoUninitialize;
放到
ADOConn := Unassigned;
之后,问题依旧……