Registriert seit: 4. Jul 2003
143 Beiträge
|
Re: Problem mit Dateiaufruf per paramstr
7. Aug 2003, 22:43
tut mir leid das is mir zu hoch kann sich mal jemand meinen source ansehen bitte... es funktioniert einwandfrei ausser das beim zuerst gestarteten programm der falsche paramstr ankommt...
Code:
procedure TForm1.WndProc(var msg : TMessage);
begin
if msg.Msg = dwMessage then begin
if msg.lParam <> 0 then begin
m1.Lines.Add(PChar(msg.lParam));
end else begin
if msg.WParam > -1 then begin
m1.Lines.Add(IntToStr(msg.wParam));
end else begin
m1.Lines.Add('Keine Daten...');
end;
end;
end else begin
inherited WndProc(msg);
end;
end;
function FindSyncDemo(const p_hWindow : DWORD;const p_szCaption : PChar) : Boolean; stdcall;
var
dwLen : DWORD;
szWork : PChar;
begin
Result := true;
dwLen := SendMessage(p_hWindow,WM_GETTEXTLENGTH,0,0) + 1;
if Length(p_szCaption) <> (dwLen-1) then exit;
szWork := AllocMem(dwLen);
try
SendMessage(p_hWindow,WM_GETTEXT,dwLen,lParam(szWork));
if StrLComp(szWork,p_szCaption,dwLen) = 0 then begin
Form1.m1.Lines.Add('Sende '+Pfad);
SendMessage(p_hWindow, dwMessage,0, lParam(Pfad));
end;
finally
FreeMem(szWork,dwLen);
end;
end;
procedure TForm1.FormShow(Sender: TObject);
var
FName: String;
begin
FName:='myprogramm';
if ParamCount > 0 then begin
Pfad:= paramstr(1);
Form1.Caption:= FName;
mHandle := CreateMutex(nil,True, 'FKILLER-36545tf456-34tf34tf23-23r3');
if GetLastError=ERROR_ALREADY_EXISTS then begin
Form1.Caption:= 'xxxxxxxxxxxxxxxxxxxx';
// jetzt paramstr(1) an exe1 senden
dwMessage := RegisterWindowMessage(3654-5tf-456-34tf3-4tf23);
EnumWindows(@FindSyncDemo,integer(FName));
end;
end;
|
|
Zitat
|