Einzelnen Beitrag anzeigen

gregorkleiber
(Gast)

n/a Beiträge
 
#1

Mehrere Instanzen + Parameterübergabe

  Alt 23. Apr 2007, 17:00
Hey leute.
Habe folgenden Code aus dem Internet, nur verstehe ich nicht, wieso er nicht funktioniert (den code kann ich teilweise nachverfolgen)...

QUELLCODE vom Programm:
Delphi-Quellcode:
var
   mHandle: THandle;
   hWindow : DWORD;
   dwAtom : DWORD;
begin
     dwMessage := RegisterWindowMessage('{93C5B2B7-CE8D-439A-857B-4CC76F35C091}'); // HIER z.B. wieso diese Zeichenfolge?
     mHandle:=CreateMutex(nil, True, 'WargasmSecure_Project');
     if GetLastError <> ERROR_ALREADY_EXISTS then
     begin
          try
             Application.Initialize;
             Application.Title := 'Secure Password Storage';
             Application.CreateForm(TForm_Main, Form_Main);
             Application.Run;
          finally
                 if mHandle <> 0 then CloseHandle(mHandle);
          end;
     end
     else (*========== ELSE ==========*)
     begin
     hWindow := FindWindow(nil, 'WargasmSecure_Project');
      if hWindow <> 0 then
      begin
        if (paramcount > 0) and FileExists(paramstr(1)) then
        begin
          //hier kommt er noch an...
          dwAtom := GlobalAddAtom(PChar(paramstr(1))); //okay, variablen "global" anlegen
          SendMessage(hWindow,dwMessage,0,dwAtom); // was genau wird hier übergeben ??
        end;
      end;
    end;
end.
und folgendes im Programm (Function -> procedure WndProc(var msg : TMessage); override;
var ->dwMessage: DWORD
Delphi-Quellcode:
procedure TForm_Main.WndProc(var msg : TMessage); //WNDPROC ? window procedure ?
var
  pFileName : PChar;
  dwLen : DWORD;
begin
  if msg.Msg = dwMessage then
  begin
    //---> hier landet er erst gar nicht
    dwLen := MAX_PATH+1;
    pFileName := StrAlloc(dwLen);

    try
      GlobalGetAtomName(msg.lParam,pFileName,dwLen);
      if saveFirst() then
      begin
        if FileExists( pFileName ) then
        begin
          ME_Main.Lines.LoadFromFile(pFileName);
          ME_Main.Enabled := true;
          ToolBar_Main.Items.Items[0].Items[4].Enabled := true;
          ToolBar_Main.Items.Items[0].Items[5].Enabled := true;
        end;
      end;
      GlobalDeleteAtom(msg.lParam);
    finally
      StrDispose(pFileName);
    end;

  end
  else inherited WndProc(msg);
end;
Dankbar für jede Hilfe...
  Mit Zitat antworten Zitat