![]() |
AW: Ordnung muss sein (LaunchBar)
Die LaunchBar wird beim Öffnen immer in der Mitte des Bildschirms angezeigt. Vermutlich liegt es daran, dass meine Taskleiste links positioniert ist.
|
AW: Ordnung muss sein (LaunchBar)
Zitat:
Zitat:
Hmm.. wie soll ich das gegen prüfen. Zitat:
Hoffe die Änderung mit dem Button ist ok das er erst sichtbar wird beim drüberfahren. Er macht mir sonst das Gesamtbild kaputt. Zitat:
Ich möchte gern das Originale Icon anzeigen lassen. Problem Dokumentiert mit Bildern. (Bei allen Windows Versionen) Der Explorer zeigt es doch richtig an.. gruss |
AW: Ordnung muss sein (LaunchBar)
Zitat:
So prüfen: Taskleiste links andocken und deine Exe starten. |
AW: Ordnung muss sein (LaunchBar)
Jo bei mir das gleiche. Danke..
Muss mal sehen wie ich das gegenprüfe am besten auf die weite der TaskLeiste hin prüfen, anschließend die Y\Top Position zur höhe des Desktop berechnen. Zitat:
Dann ändere ich es für dich ab. Dann benötige ich natürlich noch die Font Farbe für die Schrift der Seitenbar und die der Text Button. Im Format RGB gruss |
AW: Ordnung muss sein (LaunchBar)
Zitat:
Danke für die Meldung. gruss |
AW: Ordnung muss sein (LaunchBar)
Zitat:
|
AW: Ordnung muss sein (LaunchBar)
Zitat:
bzw. an Hand ![]() Ich behaupte das es nicht funktioniert. Denn warum geht es bei dir und auf meinen Systemen nicht. Man achte auf die Feinheiten. Zitat:
gruss |
AW: Ordnung muss sein (LaunchBar)
Zitat:
In der Zip-Datei von #1 sind übrigens zwei uGlobal.pas drin. Absicht oder Versehen? |
AW: Ordnung muss sein (LaunchBar)
Zitat:
Delphi-Quellcode:
Wobei es natürlich Sinn macht auch den Rückgabewert auszuwerten.
procedure TWin32ShortCut.LoadShortCut(LnkName: WideString);
var FP: array[0..MAX_PATH * 2] of Char; pfd: TWin32FindDataW; showval: integer; psfi: TSHFileInfo; begin ClearValues; FPersistFile.Load(PWideChar(LnkName), 0); FillChar(FP, Sizeof(FP), 0); FShellLink.GetPath(FP, Sizeof(FP), pfd, 0); FAppPath := String(FP); FShellLink.GetIDList(Fpidl); FillChar(FP, Sizeof(FP), 0); FShellLink.GetWorkingDirectory(FP, Sizeof(FP)); FWorkDirectory := String(FP); FillChar(FP, Sizeof(FP), 0); FShellLink.GetArguments(FP, Sizeof(FP)); FArguments := String(FP); FillChar(FP, Sizeof(FP), 0); FShellLink.GetDescription(FP, Sizeof(FP)); FDescription := String(FP); FShellLink.GetShowCmd(showval); FShowCmd := cvtTShowType(showval); FShellLink.GetHotkey(FHotKey); HotKeyToShortCut(FHotKey, FHotKeyCtrl); SHGetFileInfo(PChar(LnkName), 0, psfi, sizeof(psfi), SHGFI_ICON); FIcon.Handle := psfi.hIcon; end; |
AW: Ordnung muss sein (LaunchBar)
Zitat:
gruss |
AW: Ordnung muss sein (LaunchBar)
Zitat:
Aber nein deine Funktion bzw. Änderungen haben den gleichen Effekt wie den von mir ![]() Keine Ahnung was du machst aber es funktioniert nicht! Ich bekomme das Icon des Installer. Ok ich muss das selber richten. :) Danke für deine Unterstützung. gruss |
AW: Ordnung muss sein (LaunchBar)
Habe das Problem gefixt.. aber nichts an meiner Funktion verändert.
Delphi-Quellcode:
procedure TWin32ShortCut.LoadShortCut(LnkName: WideString);
Anbei ein Update.. Für die, die es testen wollen. gruss |
AW: Ordnung muss sein (LaunchBar)
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Ich habe ja Details bereits ![]() |
AW: Ordnung muss sein (LaunchBar)
Zitat:
Dann berichte nochmal :) Zitat:
Hat nichts hiermit zu tun. gruss |
AW: Ordnung muss sein (LaunchBar)
Zitat:
Zitat:
|
AW: Ordnung muss sein (LaunchBar)
Zitat:
Danach gebe ich dir die Antwort wenn deine Antwort falsch ist. ;) gruss |
AW: Ordnung muss sein (LaunchBar)
Ok, Raten würde ich das es an Benutzerkontensteuerung liegt da es ein protected Ordner ist.
|
AW: Ordnung muss sein (LaunchBar)
Zitat:
Du versuchst mit einer 32Bit Anwendung eine 64Bit Anwendung zu öffnen und daraus Daten zu entnehmen.. Sorry mein Freund das kann nicht funktionieren. Program Files (64Bit) Würde ich jetzt OTTB auf 64Bit umstellen dann gäbe es da keine Probleme. gruss |
AW: Ordnung muss sein (LaunchBar)
Das kann ich gerade nicht nachvollziehen aber werde gleich mal ein Laufwerk suchen und verbinden.
Mit einem 32bit TotalCommander werden mir Icons auch aus 64bit .exe Dargestellt. Ich suche meine Delphi App 32bit und berichte bzw poste Code den ich benutze um Icons zu abzuholen wenn Erfolgreich getestet. |
AW: Ordnung muss sein (LaunchBar)
Zitat:
Ich kann dir jetzt schon sagen das schlägt immer fehl. Das einzige was du versuchen könntest. Erstelle von dem Firewall Dingsbums ein Verknüpfung im Startmenu.. Dort klickst du sie mit Rechts an und erstellst mit "Senden an" Desktop (Verknüpfung) eine neue Verknüpfung auf den Desktop. Vielleich wird diese dann umgelenkt und du bekommst das richtige Icon. Ich habe die selben Problem mit "Programm Files" Dateien. (Unter Windows 7 und 10) gruss |
AW: Ordnung muss sein (LaunchBar)
Ok! Du hast recht hat nichts mit 64Bit zu tun.
Aber! Wenn ich aus Program Files bsp. von DVDMaker.exe eine Verknüpfung auf dem Desktop erstelle dann schlägt es fehl. Kopiere ich die Datei in einem anderen Pfad bsp. "D:\" oder "C:\Program Files (x86)" und erstelle dann eine Verknüpfung auf dem Desktop dann funktioniert es. gruss |
AW: Ordnung muss sein (LaunchBar)
Mein Ergebnis:
Hole ich mir das Icon über .lnk ab = Genau wie bei Dir. Hole ich mir das Icon direkt von .exe ab = Es wird mir Angezeigt. hmmm..... ich schau mal wie ich meine App dazu bewegen kann das die Datei direkt angesprochen wird. Ich berichte später nochmal, das juckt mich jetzt. (Keine Bange, ist non-Vcl) |
AW: Ordnung muss sein (LaunchBar)
Zitat:
Kopiere die Datei auf den Desktop erstelle dann einen link davon auch auf dem Desktop dann funktioniert es. ;) Ich glaube ohne das setzen in OTTB von speziellen Zugriffsrechten wird das nicht. Habe ja noch nicht mal als Admin vollen Zugriff auf Programm Files. LOL gruss |
AW: Ordnung muss sein (LaunchBar)
@KodeZwerg
Warum installierst du dir eigentlich nicht einfach die Community-Editon von Delphi? Damit kompiliert Emils SourceCode völlig problemlos :thumb: Mit einem guten Backup-/Restore-Programm (z.B. ![]() Ich versuche erst garnicht, den OTTB-Code mit meinem Delphi7 zu kompilieren :wink: Gut's Nächtle |
AW: Ordnung muss sein (LaunchBar)
Ok, meine App ist Admin berechtigt, vielleicht kann sie deswegen in \Program Files\ auf .exe Zugreifen?... steht auch noch aus zu testen Meinerseits.
Mein momentaner nachvollziehbarer Workaround wäre, extrahiere aus .lnk die Daten und Parse sie manuell. also ne "if extension(.lnk) dann splitte .lnk in Delphi Variablen" zum Auswerten "else SHGetFileInfo()". Da suche ich gerade ob es auch ohne ComObj was gibt, weil das mag ich nicht in mein non-Vcl aufnehmen. |
AW: Ordnung muss sein (LaunchBar)
Zitat:
Selbst beim DVDMaker.exe kann ich keinerlei rechte setzen werden alle verweigert. Und das ist unser Problem mit Daten aus dem Ordner ;) Neue Version hochgeladen. gruss |
AW: Ordnung muss sein (LaunchBar)
Es macht Sinn.
Wenn ich .lnk auswerten kann, ist es gefixt. Hab gerade mit einem Vcl 32bit non-Admin probiert in \Program Files\ zu gehen, kein Problem, Icons werden auch angezeigt für 75bit .exe. Beide Sources sind Delphi 7 only, ich erstelle mir mal was für D2009 was etwas ähnliches vollbringt, mir ne Dateiliste mit Infos auswertet. |
AW: Ordnung muss sein (LaunchBar)
Zitat:
Extrahieren kann ich sie auch oder mit Resource Hacker 32 Bit anzeigen. gruss |
AW: Ordnung muss sein (LaunchBar)
Vielleicht reden wir an einander vorbei, ich geh jetzt mal auf nummer sicher und zeige dir
![]() Ich Suche nach einer Methode die das macht was dort gezeigt wird.
Delphi-Quellcode:
Dieses Record will ich gefüllt haben ohne
TShellLinkInfoStruct = record
FullPathAndNameOfLinkFile: array[0..MAX_PATH] of Char; FullPathAndNameOfFileToExecute: array[0..MAX_PATH] of Char; ParamStringsOfFileToExecute: array[0..MAX_PATH] of Char; FullPathAndNameOfWorkingDirectroy: array[0..MAX_PATH] of Char; Description: array[0..MAX_PATH] of Char; FullPathAndNameOfFileContiningIcon: array[0..MAX_PATH] of Char; IconIndex: Integer; HotKey: Word; ShowCommand: Integer; FindData: TWIN32FINDDATA; end;
Delphi-Quellcode:
uses ShlObj, ComObj, ActiveX, CommCtrl;
|
AW: Ordnung muss sein (LaunchBar)
OK ;)
Lasse mich mal überraschen. gruss |
AW: Ordnung muss sein (LaunchBar)
Ich weiß ja nicht ob für Dich akzeptabel mit den Uses, in meinem non-Vcl ist das Kontroproduktiv.
Das löst aber dieses "hab nix Icon Problem" für 64bit .exe Verknüpfung aus \Program Files\, ob Admin oder Gast, beides klappt. Dann halt Record auswerten ob FullPathAndNameOfFileContiningIcon oder FullPathAndNameOfFileToExecute zu nutzen ist, jeweils mit IconIndex auswerten = Man hat mit 32bit auch 64bit .exe Icons von Verknüpfung. |
AW: Ordnung muss sein (LaunchBar)
Zitat:
Das wäre dann doch zu viel des guten ;) Zitat:
gruss |
AW: Ordnung muss sein (LaunchBar)
Öhmm, Danke für den Tipp mit Unit Namen, hab da mal reingeschaut.
Delphi-Quellcode:
Du hast doch bereits alles, ich schau mal ob ich in der Lage bin mit dieser Unit ein D2009 Projekt zum Laufen bekomme. Ansonsten ist Sonntag CE fällig :)
TWin32ShortCut = class(TBaseShortcut)
private FShellLink: IShellLink; FPersistFile: IPersistFile; FAppPath: String; FRelativePath: String; FPIDL: PItemIDList; FWorkDirectory: String; FArguments: String; FDescription: String; FShowCmd: TShowType; edit Nicht mehr jetzt, Gute Nacht. |
AW: Ordnung muss sein (LaunchBar)
Liste der Anhänge anzeigen (Anzahl: 1)
Hello Emil!
Also ich habe mich nochmal dem Thema lnk Datei gewidmet. Bin mit einer Vcl Testanwendung auch zu ein paar Ergebnissen gekommen. Siehe Anhang 49774 Was da völlig falsch läuft ist wie dieser ShortCut aufgelöst wird. Wahrscheinlich da meine Anwendung 32bit ist ersetzt Windows die Quelle automatisch. Wenn ich mir die Link Datei mit einem HexEdit betrachte, da steht nix von (x86) im Pfad. Also meine momentane Lösung ist mehr als dürftig. |
AW: Ordnung muss sein (LaunchBar)
Zitat:
gruss |
AW: Ordnung muss sein (LaunchBar)
Jupp, deswegen Suche ich nach einer anderen Methode eine .lnk Datei zu entziffern als über ComObj. Da greift Windows ein und ich kann nichts machen ausser die .exe mit dem Working Path zu parsen, was irgendwie nicht Sinn und Zweck der Sache ist.
Ich schau mir mal an ob ich ne .lnk nicht auch Binär auslesen kann, muss doch machbar sein so was. |
AW: Ordnung muss sein (LaunchBar)
Zitat:
Die Attribute selbst zu ändern und, und muss noch mal debuggen eventuell ein Problem im Code selbst wie beim "Installer Path" gruss |
AW: Ordnung muss sein (LaunchBar)
Liste der Anhänge anzeigen (Anzahl: 1)
Ich gehe immer noch davon aus das es nicht die Admin oder Zugriffs Rechte sind sondern die Art und Weise wie Windows Programm-Anfragen bedient.
Schau Dir doch mal so eine Link Datei näher an Anhang 49775 Obwohl ein fester .exe Pfad angegeben, greift Windows nicht darauf zu sondern bastelt sich die Informationen aus CSIDL und dem Solo-Namen zusammen, so ist jedenfalls meine Vermutung nach etlichen Tests unter Aufsicht von FileMon/ProcMon. |
AW: Ordnung muss sein (LaunchBar)
Zitat:
Ich muss mich erst mal um ein anderes Problem kümmern, die Qualität der Icons ist schlecht. gruss |
AW: Ordnung muss sein (LaunchBar)
Zitat:
Der Grund ist wie vermutet, dass beim Laden des Links die darin enthaltenen CLSIDs aufgelöst werden. Das kann man leicht testen, indem man einen Haltepunkt auf die entsprechende API-Funktion SHGetKnownFolderPath setzt. Die wird dabei nämlich aufgerufen. Die sinnvollste Lösung dafür ist tatsächlich einfach auf 64-Bit zu gehen, wenn man diese Information benötigt. Ich selbst habe .lnk Dateien immer lediglich an ShellExecute gefüttert, habe aber den Pfad dort nicht ausgelesen. Den Pfad zu nehmen um den Prozess zu starten ist keine so gute Idee, da man damit alle solchen "Features" zur Auflösung der korrekten Pfade übergeht. Und zur Anzeige könnte man ihn manuell aus der .lnk Datei herausfriemeln. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:51 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 by Thomas Breitkreuz