呼び出し元の Python スクリプトの名前を検出するために、Windows dll 内に機能を追加しようとしています。
How can I call a DLL from a scripting language?への回答で説明されているように、ctypes を使用して Python 経由で dll を呼び出しています。
DLL内で、WINAPI GetModuleFileName() http://msdn.microsoft.com/en-us/library/windows/desktop/ms683197(v=vs.85).aspxを使用して、呼び出しプロセスを正常に特定できます。ただし、これは Python スクリプトであるため、Python 実行可能ファイルを介して実行されるため、返されるモジュール ファイル名は「C:/Python33/Python.exe」になります。呼び出しを行う実際のスクリプト ファイルの名前が必要です。これは可能ですか?
理由の背景: この dll は認証に使用されます。スクリプトが HTTP 要求の認証に使用する共有秘密鍵を使用してハッシュを生成しています。これは dll に埋め込まれているため、スクリプトを使用しているユーザーにはキーが表示されません。スクリプトを呼び出す Python ファイルが署名されていることを確認して、誰もがこの dll を使用して署名を生成できないようにする必要があるため、呼び出しスクリプトのファイルパスを取得することが最初のステップです。