Mam takie cos
program Editor;
uses
Forms,
Windows,
Messages,
Dialogs,
SysUtils,
Unit1 in 'Unit1.pas' {BodyMultiEdytor},
Unit2 in 'Unit2.pas' {Debugger},
dlgConfirmReplace in 'dlgConfirmReplace.pas' {ConfirmReplaceDialog},
dlgReplaceText in 'dlgReplaceText.pas',
dlgSearchText in 'dlgSearchText.pas' {TextSearchDialog},
AppLib in 'AppLib.pas';
CONST
HEAD_APP_CLASS = 'TBodyMultiEdytor';
var
TMPHandle : HWND;
I : Integer;
{$R *.res}
procedure WriteMessage(Data:String);
var Handle : HWND;
begin
Handle:=FindWindow(HEAD_APP_CLASS,nil);
SendMessage(Handle,WM_USER + 6001,6001,DWord(PChar(Data)));
end;
begin
TMPHandle:=FindWindow(HEAD_APP_CLASS,nil);
if (ParamStr(1) <> '') AND (TMPHandle <> 0) then begin
for I := 1 to ParamCount do WriteMessage(ParamStr(I));
Exit;
end;
Application.Initialize;
Application.Title := 'Multi Edytor';
Application.CreateForm(TBodyMultiEdytor, BodyMultiEdytor);
Application.CreateForm(TDebugger, Debugger);
Application.CreateForm(TConfirmReplaceDialog, ConfirmReplaceDialog);
//Debugger.Show;
Application.Run;
end.
jak się mój program uruchamia to sprawdza czy jest kopia jego jak jest to wysyła parametry z jakimi została uruchomiona i teraz tak jak uruchamiam to zamiast przekazywać ścieżkę to czasem wrzuca jakieś znaczki ale częściej jest puste (WriteMessage(ParamStr(I));) ale jak użyje tego tak WriteMessage('@WTF!); to poprawnie wysyła tą wiadomość nie wiem czemu...
private
procedure EventGetMessage(var Msg: TMessage); message WM_USER + 6001;
...
procedure TBodyMultiEdytor.EventGetMessage(var Msg: TMessage);
var
DataMsg: PChar;
begin
DataMsg:=PChar(msg.lParam);
Msg.Result:=1;
if Msg.WParam = 6001 then ShowMessage(DataMsg);// CreateTabEdit(DataMsg);
end;