Jav*_*vid 1 delphi winapi windows-8
我使用的是CreateProcess
与DEBUG_ONLY_THIS_PROCESS
标志。新进程已创建,但新运行的应用程序没有执行任何操作,当我使用任务管理器查看进程列表时,我看到的只是仅分配了 70KB 内存的 exe 文件的名称!
如果我创建没有DEBUG_ONLY_THIS_PROCESS
标志的进程,应用程序将完美运行。
这是我的代码:
function TDebugger.StartDebug;
var
ProcInfo: TProcessInformation;
ProcessCreationFlags: Cardinal;
StartupInfo: TStartupInfo;
DE: TDebugEvent;
begin
// == init process info
ZeroMemory(@ProcInfo, SizeOf(TProcessInformation));
// == init startup info
ZeroMemory(@StartupInfo, SizeOf(TStartupInfo));
with StartupInfo do begin
cb := SizeOf(TStartupInfo);
lpDesktop := '';
dwX := CW_USEDEFAULT;
dwY := CW_USEDEFAULT;
dwXSize := CW_USEDEFAULT;
dwYSize := CW_USEDEFAULT;
wShowWindow := SW_SHOWDEFAULT;
end;
// == Create the process
ProcessCreationFlags := DEBUG_ONLY_THIS_PROCESS;
if (not CreateProcess(PWideChar(Path), Nil, Nil, Nil, False, ProcessCreationFlags, Nil, PWideChar(CurrentDirectory), StartupInfo,
ProcInfo)) then
RaiseLastOSError;
end;
Run Code Online (Sandbox Code Playgroud)
我认为在创建流程后我应该调用一些 API 函数,但我不知道它是什么。谁能帮我解决这个问题?
附加信息:我的主要应用程序是一个 IDE,它需要调试它的播放器应用程序。
当您使用 DEBUG_ONLY_THIS_PROCESS 创建用于调试的进程时,该进程实际上并未开始运行。它等待您的调试器启动它。所以,是的,您确实必须调用一些函数来启动和运行进程。您现在需要编写调试器!其主体是您的调试器循环。
一些可能有帮助的参考资料:
归档时间: |
|
查看次数: |
1005 次 |
最近记录: |