現在、低レベルのマウス フックを使用するアプリケーションを作成しています。管理者権限のあるシステムでアプリケーションを起動しなければならないので、サービスを作成したかったのです(こちらをご覧ください:これはサービスの実用化ですか?)。サービスがフック マウス フックを使用できないことがわかりました。新しいコンセプトが必要ですが、どこから始めればよいか本当にわかりません。簡単なプロセスですでに試しましたが、システムの起動時にタスクスケジューラを使用して管理者として実行することはできませんでした。
では、何を使用することをお勧めしますか?Windows サービスを使用してプロセスを開始する必要がありますか? ちょっとやり過ぎじゃない?
編集:サービスからフックを実行するプロセスを開始しようとしました。プロセスは開始されますが、単純なサービスの動作と同じように動作するようです。フックをインストールできますが、コールバックが呼び出されません。私はこのコードでプロセスを開始しています:
STARTUPINFO info={sizeof(info)};
PROCESS_INFORMATION processInfo;
if (!CreateProcess(path, NULL, NULL, NULL, TRUE, 0, NULL, NULL, &info, &processInfo))
{
std::wstring msg(L"Could not start \"");
msg.append(path);
msg.append(L"\". CreateProcess");
WriteErrorLogEntry((PWSTR)msg.c_str());
return;
}
どうすれば問題を解決できますか? プロセスは管理者権限で実行する必要がありますが、別のコンテキストが必要ですか?