種を明かせば単なる DLL だったワケですが。ランチャープログラム(launcher.exe)が、別ファイルにある実行コードを launcher.exe と同じプロセスで実行するためのサンプルです。
要求事項はこんな感じでした。
- タスクマネージャから prog1 が見えない
- 開発版は prog1 単体で実行・デバッグができる
- リリース版は prog1 単体で実行できない
- ソースコードはこの機構を全く意識しない
CreateProcess や ShellExec で prog1 を実行すると、prog1 がタスクマネージャから別プロセスとして見えてしまいます
(これらの API には使ったことのない引数が多いので、実のところ適当な引数で一発解決かもしれません)
そこで LoadLibrary と GetProcAddress を使う案。実はエッセンス部分はこれだけでした。
後は要求事項の2.〜4.をスマートに満たすだけで、わざわざエントリに起こすまでも無かったような
(´・ω・`)つ[
ダウンロード]
prog1 が起動される過程を簡単に示すと次の通りです。
ネットゲームによく見られるようなパッチダウンローダとプログラム本体のような構成に使えるかもしれません。
メリット…? …さぁ?
リリース版:
Windows → launcher.exe → LoadLibrary + GetProcAddress → prog1::ExportedMain → prog1::WinMain
開発版:
Windows → prog1::WinMain