AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Programm nur 1x starten

Ein Thema von schitho · begonnen am 14. Dez 2002 · letzter Beitrag vom 15. Dez 2002
 
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.123 Beiträge
 
Delphi 11 Alexandria
 
#12
  Alt 15. Dez 2002, 03:57
Moin Zusammen,

und so wäre man dann auf der sicheren Seite:
Diesmal über die Message WM_COPYDATA
(gekürzt, der Rest steht oben)

Delphi-Quellcode:
program Multifileload;

uses
  //...
  messages, // wg. WM_COPYDATA
  //...

var
  //...
  cdWork : TcsCopyDataStruct;

begin
    //...
    else
    begin
      // Den Fenstertitel des Programmes abfragen
      hWindow := FindWindow(nil,'Multifiledemo');
      if hWindow <> 0 then
      begin // gefunden, dann den Dateinamen an die laufende Instanz senden
        if (paramcount > 0) and FileExists(paramstr(1)) then
        begin
          // CopyData Struktur füllen
          cdWork.dwData := dwMessage; // Message, das eine zu ladende Datei da ist
          cdWork.cbData := Length(paramstr(1))+1;
          cdWork.lpData := AllocMem(cdWork.cbData); // Speicher reservieren
          try
            // Und Dateinamen eintragen
            CopyMemory(cdWork.lpData,@paramstr(1)[1],cdWork.cbData-1);
            // Fertig, Daten kopieren
            SendMessage(hWindow,WM_COPYDATA,0,lParam(@cdWork));
          finally
            // Speicher wieder freigeben
            FreeMem(cdWork.lpData,cdWork.cbData);
          end;
        end;
      end;
    end;
  //...
end.
Delphi-Quellcode:
//...
// Deklaration für die CopyData Strutur
type
  PcsCopyDataStruct = ^TcsCopyDataStruct;
  TcsCopyDataStruct =
  packed record
    dwData : DWORD;
    cbData : DWORD;
    lpData : Pointer;
  end;

var
  frmMAIN: TfrmMAIN;
  dwMessage : DWORD;

implementation
uses MDIPart;

{$R *.DFM}

procedure TfrmMAIN.WndProc(var msg : TMessage);

var
  frmWork : TfrmSub;
  pFileName : PChar;
  dwLen : DWORD;
  cdWork : PcsCopyDataStruct;

begin
  if msg.Msg = WM_COPYDATA then
  begin
    // Adresse der übergebenen Daten laden
    cdWork := PcsCopyDataStruct(msg.lParam);
    // Message prüfen
    if cdWork.dwData = dwMessage then
    begin
      // Neues Unterfenster generieren
      frmWork := TfrmSub.Create(self);
      // Datei aus übergebenem Namen laden
      frmWork.Memo1.Lines.LoadFromFile(PChar(cdWork.lpData));
    end;
  end
  else
  begin
    // Jede andere Message an die ursprüngliche Prozedure weiterreichen
    inherited WndProc(msg);
  end;
end;

//...
end.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz