试过了,在下面二个方式,调用EXE,均能显示。
shellexecute(ServerFrm.handle,'open',pchar(D:\养老机构数据管理_Client\StartOH.exe),nil,nil,sw_shownormal);
WinExec('D:\养老机构数据管理_Client\StartOH.exe',sw_normal);
shellexecute(ServerFrm.handle,'open',pchar(D:\养老机构数据管理_Client\StartOH.exe),nil,nil,sw_shownormal);
WinExec('D:\养老机构数据管理_Client\StartOH.exe',sw_normal);
解决方案 »
- 求各位高手帮助出出主意,小弟实在搞不定了!特来请教
- Oh~Ye 猩猩大变身,可以吃香蕉了 (笑.............)
- 我们一般都看的看内网的IP和自己主机的IP,但是如何查看路由器外网的IP地址 ?
- :DBGrid中,先选择了某省,在下个字段的下拉列表里自动显示该省的县市的选择,如何实现
- 局域网中我如何得到使用某一共享资源的机器名或其IP?
- 如何在DBGrid的Title上画图?
- 关于线程的问题...........
- 一个很难的写入汇编/Hook问题!!
- 谁能告诉我:如何得到数组的长度的函数?
- 请问如何统计所选择的字段的值的总和?
- 有办法实现重启进入安全模式吗?
- 用了xe5自带的皮肤样式之后不能改edit背景色了
想在当前用户桌面中执行比较麻烦.做过这个.要获取当前用户的token.然后复制一个,再用CreateProcessAsUser来创建进程
wr960204你好,有api可以获取user,有什么办法可以显示到当前的桌面上吗?
procedure CreateNewProcess;
var
CmdLine: AnsiString;
ErrorCode: Cardinal;
ConnSessID: Cardinal;
Token: Cardinal;
App: AnsiString;
FProcessInfo: _PROCESS_INFORMATION;
FStartupInfo: _STARTUPINFOA;
begin
ZeroMemory(@FStartupInfo, SizeOf(FStartupInfo));
FStartupInfo.cb := SizeOf(FStartupInfo);
FStartupInfo.lpDesktop := nil; ConnSessID := WTSGetActiveConsoleSessionId; if WTSQueryUserToken(ConnSessID, Token) then
begin
if CreateProcessAsUser(Token, PAnsiChar(App), PAnsiChar(CmdLine),
nil, nil, false, 0, nil, nil, FStartupInfo, FProcessInfo) = False
then
begin
ErrorCode := GetLastError;
try
RaiseLastOSError(ErrorCode);
except on E: Exception do
EventLog.LogError(e.ClassName +': '+ e.Message);
end;
end;
end;
end;