Avatar billede mr.meincke Nybegynder
17. oktober 2003 - 22:19 Der er 6 kommentarer og
1 løsning

Msg.ParamW

Hej,

Når jeg bruger følgende funktion:
procedure TMainForm.MessageReceiver(var msg: TMessage);
var
  FileName: string;
begin
  FileName := PChar(msg.WParam);
  if FileName <> '' then
  begin
    DoOpenFile(FileName);
  end;
end;

Bliver FileName P;- Hva sker der?!

// Mr.Meincke
Avatar billede zerohero Nybegynder
18. oktober 2003 - 14:18 #1
Jeg tror ikke der sker ret meget :-))
Men jeg tror, at jeg ved hvad meningen var med koden. Der onkes en " Drag'n'Drop File " funktion i applikationen. Am I wrong?
Avatar billede zerohero Nybegynder
18. oktober 2003 - 14:20 #2
Jeg har noget kode der kan give dig en " Drag'n'Drop File " funktion i dit program.
Avatar billede mr.meincke Nybegynder
18. oktober 2003 - 15:08 #3
Ja, Det er når du dobbeltklikker på en fil at den åbner mit program... Så tjekker mit program om den allerade køre, hvis ja bruger den PostMessage funktionen
Avatar billede Slettet bruger
18. oktober 2003 - 21:07 #4
Du kan bruge WM_COPYDATA istedet:

http://www.swissdelphicenter.ch/torry/showcode.php?id=810 :-)
Avatar billede borrisholt Novice
21. oktober 2003 - 08:38 #5
Smid en memo felt på en form og så der her kode :

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    procedure AppMessageHandler(var Msg: TMsg; var Handled: Boolean);
    procedure WMDropFiles(var WinMsg: TWMDropFiles); message wm_DropFiles;
  end;

var
  Form1: TForm1;

implementation
uses
  ShellAPI;
{$R *.dfm}

procedure TForm1.AppMessageHandler(var Msg: TMsg; var Handled: Boolean);
begin
  if (Msg.Message = WM_DropFiles) and IsIconic(Application.Handle) then
  begin
    Perform(Msg.Message,Msg.WParam,Msg.LParam);
    Handled := true;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  DragAcceptFiles(Handle, True);
  DragAcceptFiles(Application.Handle, True);
  Application.OnMessage := AppMessageHandler;
end;

procedure TForm1.WMDropFiles(var WinMsg: TWMDropFiles);

const
  BufSize = 256;
var
  TempStr : array[0..pred(BufSize)] of char;
  i,NumDroppedFiles : integer;
begin
  NumDroppedFiles := DragQueryFile(WinMsg.Drop,$ffffffff,nil,0);

  for i := 0 to pred(NumDroppedFiles) do
  begin
    DragQueryFile(WinMsg.Drop,i,TempStr,BufSize);
    Memo1.Lines.Add(TempStr);
  end;

  DragFinish(WinMsg.Drop);
  WinMsg.Result := 0;
end;

end.
Avatar billede mr.meincke Nybegynder
21. oktober 2003 - 17:29 #6
Hjælper det på mit problem... ? :S Ved ikk, altså.. Her er min kode:

procedure TMainForm.HandleMessage(var Message:
    TMessage);
var
  FileName: string;
begin
  FileName := PChar(Message.WParam);
  ShowMessage(FileName);
  if FileExists(FileName) then
  begin
    DoOpenFile(FileName);
  end;
end;
// Og til sidst :o)
var
  strCaption: String;
  Reg: TRegistry;

initialization
  MutexHandle :=CreateMutex(nil,true,'NMP IDev 2003');
  Reg := TRegistry.Create;
  Reg.RootKey := HKEY_CURRENT_USER;
  if Reg.OpenKey('Software\', False) = True then
    strCaption := Reg.ReadString('IDevCap');
  Reg.Free;
  if GetLastError = ERROR_ALREADY_EXISTS then
  begin
    ShowMessage(ParamStr(1));
    SendMessage(FindWindow(nil,PChar(strCaption)),TH_IDEV_2003,0,DWORD(PChar(ParamStr(1))));
    halt;
  end;
finalization
  if MutexHandle <> 0 then CloseHandle(MutexHandle);
Avatar billede mr.meincke Nybegynder
14. november 2003 - 13:19 #7
Fik det ikk til at virke... Du får points alligevel...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester