IDEからの実行かEXEファイルからの実行かを判別する方法を教えて下さい。
FAQだと思うのですが、見つけられません。
IDEからの起動なら、Delphi側の停止ボタン等がEnabled=Trueになるのでは?
すみませんが、monstさんの質問に便乗させて下さい。
何をしたいのかがよくわかりませんが、もし、下記のようなことをしたいのであれば、
私も知りたいので、わかる方教えてください。
{$IFDEF IDEの時}
{ IDEの時のコード }
{$ELSE}
{ EXEの時のコード }
{$ENDIF}
FAQ なんですか? 知りませんでした。
IsDebuggerPresent というAPIをつかってみたところ、D5 Windows2000 では
うまくいっているようです。D5 ではこのAPIがインポートされていないので
自前でインポートします。Windows98 以降で使えます。
function IsDebuggerPresent:Boolean;
type
TFuncType = function ():Bool;stdcall;
var
Handle:THandle;
IsFromDelphiIDE:TFuncType;
begin
Handle := LoadLibrary('kernel32.dll');
@IsFromDelphiIDE := GetProcAddress(Handle,'IsDebuggerPresent');
result := IsFromDelphiIDE;
FreeLibrary(Handle);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if IsDebuggerPresent then
Label1.Caption := 'from Delphi IDE'
else
Label1.Caption := 'from EXE';
end;
jokのコードで解決しました(D7,WinXp)。
理解領域を超えていますので、blackboxで使わせて頂きます。
ありがとうございました。
初心者999さんのご指摘のとおり、
{$IFDEF IDEの時}
{ IDEの時のコード }
{$ELSE}
{ EXEの時のコード }
{$ENDIF}
で、debug時のパスワード入力を省略する際に使っています。
↑↑↑↑
jokのコードで解決しました(D7,WinXp)。→jokさんのコードで〜
の間違いです。
たいへん失礼をしました。
解決なさっているようですが、
if DebugHook <> 0 then
ShowMessage('debug')
else
ShowMessage('no-debug');
が手軽でいいと思います。
> shaki さん
確認しました。DebugHook は、System.pas で宣言されている変数なんですね。
知りませんでした。こっちの方が確かにいいですね。
shakiさんありがとうございました。
ツイート | ![]() |