Einzelnen Beitrag anzeigen

wb32

Registriert seit: 4. Jul 2003
143 Beiträge
 
#12

Re: Problem mit Dateiaufruf per paramstr

  Alt 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;
  Mit Zitat antworten Zitat