Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Unterschied Drag/Drop XP-Vista (https://www.delphipraxis.net/120289-unterschied-drag-drop-xp-vista.html)

haentschman 8. Sep 2008 19:30


Unterschied Drag/Drop XP-Vista
 
Hallo alle miteinander...

kann mir bitte jemand den Unterschied beim Drag/Drop zwischen XP und Vista erklären.

folgender Code funktioniert unter XP aber unter Vista wird "HabeFertig" nicht ausgeführt.
Delphi-Quellcode:
const
  WM_FERTIG = WM_USER + 100;

  type
  TJvFileListBox = class(JvDriveCtrls.TJvFileListBox)
  private
    ListeDateien: TStringList;
    procedure DropFiles(var Msg: TMessage); Message WM_DROPFILES;
    procedure HabeFertig(var Msg: TMessage); Message WM_FERTIG;
  end;
.
.
.
procedure TJvFileListBox.DropFiles(var Msg: TMessage);
var
  i, Anzahl, Size: Integer;
  SourcePfad: PChar;
begin
  ListeDateien:= TStringList.Create;
  Anzahl := DragQueryFile(Msg.WParam, $FFFFFFFF, SourcePfad, 255);
  for i := 0 to (Anzahl - 1) do
    begin
      Size := DragQueryFile(Msg.WParam, i , nil, 0) + 1;
      SourcePfad:= StrAlloc(Size);
      DragQueryFile(Msg.WParam,i , SourcePfad, Size);
      Pfad:= ExtractFilePath(StrPas(SourcePfad));
      Dateiname:= Copy(StrPas(SourcePfad),Length(Pfad)+1,Length(StrPas(SourcePfad))- Length(Pfad));
      ListeDateien.Add(Dateiname);
      StrDispose(SourcePfad);
    end;
  DragFinish(Msg.WParam);
  PostMessage(Handle, WM_FERTIG, 0, 0);
end;

procedure TJvFileListBox.HabeFertig(var Msg: TMessage);
var
  i: Integer;
begin
  SetForegroundWindow(FAnlagenkomponenten.Handle);
  if BestatigungK then
    begin
      if MessageDlg('Kopieren von ' + IntToStr(ListeDateien.Count) + ' Dateien nach ' + 
                     FAnlagenkomponenten.DocVerzeichnis.Text + ' ?',mtConfirmation, [mbYes, mbNo], 0) = mrNo then
        begin
          exit;
        end;
    end;
  for i := 0 to ListeDateien.Count -1 do
    begin
      Dateiname:= ListeDateien.Strings[i];
      CopyFile(PChar(Pfad + Dateiname),PChar(FAnlagenkomponenten.DocVerzeichnis.Text + '\'+ Dateiname),false);
    end;
  FAnlagenkomponenten.JvFileListBox1.Update;
  ListeDateien.Free;
end;
Danke für Tipps... :hi:

bepe 8. Sep 2008 20:10

Re: Unterschied Drag/Drop XP-Vista
 
Wird dein Programm evtl. mit admin-Rechten gestartet oder liegen die Dateien in einem Ordner auf den nicht jedes Programm zugreifen darf? Könnte mir bei Vista ein Rechte-Problem gut vorstellen.

haentschman 8. Sep 2008 20:14

Re: Unterschied Drag/Drop XP-Vista
 
Das Programm läuft mit Adminrechten...auf die Ordner habe ich Zugriff (Quelle + Ziel)

Danke für die schnelle Reaktion. :hi:

xaromz 8. Sep 2008 20:32

Re: Unterschied Drag/Drop XP-Vista
 
Hallo,

wenn Dein Programm mit Adminrechten läuft, kann es keine Drop-Nachrichten von anderen (Nicht-Admin-)Programmen erhalten. Das ist aus Sicherheitsgründen so gewollt. Wenn Du Notepad als Admin startest, kannst Du auch nichts mehr reindroppen.

Gruß
xaromz

haentschman 9. Sep 2008 18:26

Re: Unterschied Drag/Drop XP-Vista
 
Hallo

Zitat:

kann es keine Drop-Nachrichten von anderen (Nicht-Admin-)Programmen erhalten.
...und du hast Recht. :thumb:

Wenn ich das Quellprogramm auch mit Adminrechten starte funktioniert das ganze wieder.
...dann muß ich mal das Konzept überdenken. :?
Das Problem stellen Downloads beim Onlineupdate dar welche ins Programmverzeichnis gehören.
... findet sich eine Lösung 8)

Danke nochmal...wieder etwas schlauer :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz