Hi Forum.
Ich hab da ein Problem an dem ich verzweifel. Ihr seid meine letzte Hoffnung..
Also, gegeben ist ein Programm mit eigener Ableitung von VirtualStringTree und den Drag and Drop Komponenten (von
hier). Ich möchte gerne Dateien in den Explorer ziehen, das mache ich im abgeleiteten Baum im überschriebenen DoDragging() folgendermaßen:
Delphi-Quellcode:
procedure TMFileTree.DoDragging(P: TPoint);
var
i: Integer;
Entries: TFileDataArray;
begin
if FDragSource.DragInProgress then
Exit;
FDragSource.Files.Clear;
Entries := GetSelected;
for i := 0 to Length(Entries) - 1 do
FDragSource.Files.Add(Entries[i].Filename);
if FDragSource.Files.Count = 0 then
Exit;
DoStateChange([], [tsOLEDragPending, tsOLEDragging, tsClearPending]);
FDragSource.Execute(True);
end;
Funktioniert auch blendend. Ich benutze die Drag und Drop Komponenten, weil ich gerne asynchron Draggen möchte. Und jetzt zu dem für mich unerklärlichen Phänomen.
Wenn ich das Programm auf einem anderen Rechner laufen lasse (Beide Rechner sind Win7 x64) kommt es zu Problemen. Sobald ich die Drag&Drop Aktion starte, bekomme ich die schöne Meldung "Thread-Fehler: Das
Handle ist ungültig (6)" und das wars mit Draggen. Das interessante ist jetzt aber folgendes (war auch ein schöner Zufall, dass ich das gemerkt habe):
Starte ich das Programm von irgendeinem Pfad aus (exe hinkopieren, doppelklicken), der nicht "C:\Programme (x86)\" oder ein Unterverzeichnis davon ist, funktioniert alles blendend. Wohnt das Programm in "C:\Programme (x86)\", kommt es zu besagtem Fehler.
Eine weitere Merkwürdigkeit ist, dass, wenn ich das Programm aus dem Programme-Ordner heraus als Administrator starte (Rechtsklick->Als Administrator ausführen), auch alles gut funktioniert...
Hat da irgendjemand vielleicht einen Hinweis oder einen Denkanstoß? Vielen dank im vorraus und erstmal noch einen schönen Abend