CreateProcessのサンプル
更新:2006.12.09 (dmd 0.176, 0.177)
Psapi.hとか、WinBase.hがphobosに組み込まれていないので
自前で書かにゃイカン。メンドクサー(゜Д゜)
とりあえず、notepadを開くだけ。
追記:みくしで質問してみたところ、
http://www.prowiki.org/wiki4d/wiki.cgi?WindowsAPI
からYTさんが昔Dモジュール化したものを最近のコンパイラでも通るようにしたものが手に入るようです。将来的にこれがphobosに取り込まれることを祈りつつ、今後はこれを使っていこうと思います。
ついでにdmd 0.177でも確認しときました。
以下のソースコード(test.d)と同じ位置にwin32モジュールを展開して、
dmd test.d win32/winbase.d
としてください。
import std.stdio; import std.stream; import std.c.windows.windows; import win32.psapi; import win32.winbase; void main(char[][]argv){ PROCESS_INFORMATION piProcInfo; STARTUPINFO siStartInfo; PROCESS_MEMORY_COUNTERS memInfo; SECURITY_ATTRIBUTES saAttr; saAttr.nLength = SECURITY_ATTRIBUTES.sizeof; saAttr.bInheritHandle = true; saAttr.lpSecurityDescriptor = null; // siStartInfo.cb = STARTUPINFO.sizeof; siStartInfo.hStdError = siStartInfo.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE); siStartInfo.dwFlags |= STARTF_USESTDHANDLES; assert( CreateProcess( cast(char*)null,//MtoW(szCmdline), cast(char*)"notepad", // command line null, // process security attributes null, // primary thread security attributes cast(int)0, // handles are inherited cast(uint)NORMAL_PRIORITY_CLASS, // creation flags null, // use parent's environment cast(char*)null, // use parent's current directory &siStartInfo, // STARTUPINFO pointer &piProcInfo) ); // receives PROCESS_INFORMATION }