おはようございます。
以下のコードでSample.exeを実行しようとすると
「モジールKERNELBASE.dllのアドレス 750C76E5でアドレス006676A4に対する書き込み違反がありました。」警告メッセージが発生して実行できませんでした。
原因を知っていらっしゃる方おいでましたら、教えていただけますでしょうか。
お願いいたします。
procedure TfrmTest.Button1Click(Sender: TObject);
const
exeName = 'C:\App\Sample.exe';
var
SI : TStartupInfo;
PI : TProcessInformation;
command : string;
begin
command := exeName;
GetStartupInfo(SI);
CreateProcess(nil,pchar(command), nil, nil, False, 0, nil, nil, SI, PI);
end;
環境も書かずに質問とな?
はともかく、SIとPIは初期化して使いましょう。あとUniqueString(command);としたほうがいいかも。
通りすがりさん申し訳ありませんでした。
慌てていて大事なことを忘れていました。
環境は以下の通りです。
Windows 8.1 Pro 64bit
Delphi XE5 Enterprise
ン
モノはヌモユノで一応「初期化」していますし(ちゃんと自分で中身埋める方が望ましいですけど)
ミノはパラメータなので初期化はいらないんじゃないでしょうか。
テミ関数は、第イ引数ィテフゥに渡された文字列を書き換えます。
なのでここには書き換え不可のメモリ領域にある文字列(例えばテとか文字列リテラルとか)は使えません。
これが問題だと思うので、アドバイス通りにユモしたらどうでしょうか?
スススススススススススススススススススススススススススススススススススススススス
ニコ しんちゃん
トコ イーアカッーオッアーィ火ゥ アアコエーコイア シ スュアセシ初心者セ シッニセシノヘヌ ス「コッッョョョッッアョ「 ス「ー「セ 書込者ノト:ロ 「。ィ」 ン
モコ
通りすがりさん、さん、ご回答ありがとうございました。
ヲサコスヲサホサ の後に
ユモィゥサ を追加すると正常にモョが実行されました。
助かりました。ありがとうございます。
ツイート | ![]() |