2017-09-30 6 views
-2

私はアプリケーションを持っていて、win + startupフォルダ内にそのショートカットを入れても問題ありません。Delphi6の起動時の動作をコード化する方法を教えてください。

私はこのアプローチをコーディングして変更したいので、この記事の最後に記載されているコードを使用しました。

コードがHKLM内部キーを入力しますが、システムの起動時にWindowsのエラーがあります:モジュールのアドレス004815EBで

アクセス違反「ap1.exe」を。アドレス00000000

の読み取りは、このエラーは勝利XPを実行して、3台の異なるコンピュータ上似ているか、エラーが起動時に実行されるプログラムによって提起された7

procedure SetAutoStart(AppName, AppTitle: string; bRegister: Boolean); 
const RegKey = '\Software\Microsoft\Windows\CurrentVersion\Run'; // Run or 
RunOnce 
var Registry: TRegistry; 
begin 
    Registry := TRegistry.Create; 
    try Registry.RootKey := HKEY_LOCAL_MACHINE; 
     if Registry.OpenKey(RegKey, False) 
     then begin 
       if bRegister = False then Registry.DeleteValue(AppTitle) 
            else Registry.WriteString(AppTitle, 

AppName); 
       end; 
    finally Registry.Free; 
    end; 
end; 
+0

この「SetAutoStart()」プロシージャは、どのように、いつ、どこで呼び出すのですか? –

+1

あなたが私の質問を無視したことは非常に残念です。がんばろう! –

答えて

1

を獲得します。問題のコードとは何の関係もありません。レジストリエディタを使用してレジストリエントリをチェックすることで、問題のコードが正常に動作することを確認できます。

起動時に実行されているプログラムをデバッグする必要があります。対話型デバッガを接続することはできません。代わりに、トレースデバッグを使用する必要があります。

+0

プログラムはファイルを読み取りますが、このファイルは常に存在します。アイコンをクリックしてアプリケーションを起動すると、すべてが正常です。しかし、HKLM \ .. \ RUN内にリンクを張って起動するか、ShellExecuteを使用する別のアプリケーションで起動すると、ファイルを読み込むことができなくなります。起動条件によっては、アプリケーションがファイルへのアクセスを許可されない可能性があります。 – deadlykitten

+0

私が言ったように、デバッグを行います。コードがどこで失敗するかを調べる。理由を明らかにする。すべてのトレースデバッグが可能です。私が推測しなければならないのは、あなたが相対パスを使用していて、作業ディレクトリが期待したものではないと言えるでしょう。相対パスは使用しないでください。絶対パスを使用します。 –

+0

Davidありがとう!私は完全なパスを使用していたはずです... – deadlykitten

関連する問題