AW: Ordnung muss sein (LaunchBar)
Zitat:
Der liegt doch unter User/Desktop ich kann mir nicht vorstellen das unter W10 das Verzeichnis nicht mehr existiert. Eventuell mal mit Adminrechten starten, Check mal diese Zeile in CreateShortCut.
Delphi-Quellcode:
sDeskTopAdm := GetSpecialFolder(CSIDL_DESKTOP) + '\';
gruss |
AW: Ordnung muss sein (LaunchBar)
Zitat:
Der Sprites.Count ist immer korrekt. Wenn überhaupt dann liegt es an deinem System der Desktop Ordner muss vorhanden sein. Ich kann aber nicht den Quelltext manipulieren weil auf deinem System etwas nicht stimmt. Wie gesagt prüf mal diese Zeile
Delphi-Quellcode:
sDeskTopAdm := GetSpecialFolder(CSIDL_DESKTOP) + '\';
Das sollte dir zurück liefern. C:\Users\UserName\Desktop\ (Admin) oder C:\Users\Public\Desktop\ (Public). gruss |
AW: Ordnung muss sein (LaunchBar)
GetSpecialFolder liefert schon einen Backslash am Ende. Der ist daher dann doppelt vorhanden. Besser ist in so einem Fall IncludeTrailingPathDelimiter zu benutzen:
Delphi-Quellcode:
Bei mir funktioniert die aktuell angehängte Version nun jedenfalls mit Windows 10 und auch Icons sind nun da. :thumb:
sDeskTopAdm := IncludeTrailingPathDelimiter(GetSpecialFolder(CSIDL_DESKTOP));
// fügt das Pfadtrennzeichen hinzu, wenn es noch nicht da ist Das Problem mit dem leicht verschobenen Menütext ist noch da, stört aber nicht wirklich. Die Koordinaten stimmen jedenfalls. Diese sind bei beiden Zeichenvorgängen gleich. Warum das so falsch aussieht, kann ich aktuell auch nicht sagen. // EDIT: Nehme ich diese Zeile heraus, wird der durch die Mausbewegung gehoverte Eintrag nicht mehr zurückgesetzt, aber der Fehler mit der Textverschiebung ist weg:
Delphi-Quellcode:
GDIP_DrawImageRectRectI(Graphics, ImgBack, ImgItemHeight, PDis.rcItem.Top,
Rect.Right - SideBarWidth, ImgItemHeight, 0, PDis.rcItem.Top * (Integer(imgH) div Rect.Bottom), imgW, (Integer(imgH) div Rect.Bottom) * ImgItemHeight, 2, nil, false, nil); |
AW: Ordnung muss sein (LaunchBar)
Hab da jetzt noch mal reingeschaut und das unter Windows 10 zum Laufen gebracht:
uShortCut.pas
Delphi-Quellcode:
Allerdings muss man dann die OTTB.config aus dem Post oben löschen (sie führt zu einem Crash weil wohl ein paar der Links nicht vorhanden oder ungültig sind).
procedure TShortCut.CreateShortCut(WinHandle: HWND);
... begin .. if Win32MajorVersion >= 10 then begin Prop.ProgManHandle := 0; repeat Prop.ProgManHandle := FindWindowEx(0, Prop.ProgManHandle, 'WorkerW', ''); Prop.ListViewHandle := FindWindowEx(Prop.ProgManHandle, 0, 'SHELLDLL_DefView', ''); until (Prop.ListViewHandle<>0) Or (Prop.ProgManHandle = 0); End else begin Prop.ProgManHandle := FindWindow('Progman', 'Program Manager'); Prop.ListViewHandle := FindWindowEx(Prop.ProgManHandle, 0, 'SHELLDLL_DefView', ''); end; Prop.ListViewHandle := FindWindowEx(Prop.ListViewHandle, 0, 'SysListView32', 'FolderView'); ItemCount := SendMessage(Prop.ListViewHandle, LVM_GETITEMCOUNT, 0, 0); ... |
AW: Ordnung muss sein (LaunchBar)
Zitat:
Ich muss den Backlash hier anhängen warum auch immer sonst geht es nicht. Werde es ändern ;) Und neue Version hochladen. Zitat:
Zitat:
Ist das gleiche Menu wie hier. http://www.delphipraxis.net/192329-kvideo-player.html Tritt das dort auch auf ? Was mich mal interessieren würde hängt sich bei dir die IDE beim Debuggen des Menüs auf? 1. Ich setze einen Breakpoint bei, in WM_DRAWITEM:
Delphi-Quellcode:
jetzt steppe ich eine Zeile weiter.
if ImgBack = 0 then
ImgBack := GDIP_CreateImageFromFile(FolderResource + 'Menu\MEN_Center.png'); Drücke ich jetzt den grünen Pfeil Start(F9)) dann hängt sich die komplette IDE auf. Keine Ahnung ob das nur unter D2010 auftritt oder auch woanders. Wenn woanders! Dann ist da noch irgendetwas faul im Code was die IDE nicht verträgt. (Oder Thread Problem) was unter umständen dieses Problem verursacht. gruss |
AW: Ordnung muss sein (LaunchBar)
Zitat:
Das muss so laufen und tut es auch so wie man hört. Denn @jaenicke verwendet auch W10 das kann nicht unterschiedlich sein. Trotzdem Danke! gruss |
AW: Ordnung muss sein (LaunchBar)
Das mit dem Backslash hat bei mir überhaupt keine Auswirkung unter Windows 10. Ob mit oder ohne Doppeltem Backslash spielt keine Rolle, das eigentliche Problem liegt darin, das unter Windows 10 der 'SHELLDLL_DefView' nicht mehr unter 'Progman' liegt sondern in einem Fenster der Klasse "WorkerW".
Solange also die Liste nicht gefunden wird der Code unter:
Delphi-Quellcode:
erst gar nicht ausgeführt!
ItemCount := SendMessage(Prop.ListViewHandle, LVM_GETITEMCOUNT, 0, 0);
if ItemCount <> 0 then begin |
AW: Ordnung muss sein (LaunchBar)
Zitat:
Ist aber irgendwie fraglich denn bei den anderen Leuten mit W10 funktioniert es doch auch. Es sei denn die fahren alle in einer VM (Wie sich das dort verhält kann ich nicht mit Bestimmtheit sagen). Neue Version hochgeladen. IncludeTrailingPathDelimiter hinzugefügt. gruss |
AW: Ordnung muss sein (LaunchBar)
Hier noch eine andere Version die auf Klassen basiert. (Mache ich nicht gern unter NON-VLC)
Also alle Funktionen in uMain wurden zur Klasse TMainApp hinzugefügt um das Maximum an Globalen Variablen zu reduzieren. Wenn euch das lieber ist werde ich diese als Arbeitskopie verwenden und darauf weiter aufbauen. Das obige Archiv wird in dem Fall ersetzt. Ok keine Mitteilung egal werde es trotzdem ersetzen. gruss |
AW: Ordnung muss sein (LaunchBar)
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Zitat:
Zitat:
Zitat:
Anhang 47542 Ich habe aber gelesen, dass andere seit Windows Vista ebenfalls dieses Problem haben. Viele gehen daher alle WorkerW Fenster durch, wenn der Weg über Progman nicht erfolgreich war und suchen darin nach der ListView. Wenn, reicht jedenfalls nicht einer der Wege. Seit Vista ist beides möglich. Es scheint etwas damit zu tun zu haben, ob Aero aktiviert ist usw. Zitat:
Zitat:
https://github.com/jaenicke/MTCL Dann ist auch gleich die Versionshistory usw. dabei: https://github.com/jaenicke/MTCL/commits/master https://github.com/jaenicke/MTCL/com...990d348e4f6efa |
AW: Ordnung muss sein (LaunchBar)
Zitat:
Muss nur noch ein paar kleine Dinge machen dann hat sich das eh erledigt. Zitat:
Rechte Maustaste Caption :) gruss |
AW: Ordnung muss sein (LaunchBar)
Habe das nochmal gescheckt.
Das mit dem Portablen Kram funktioniert über die INI nicht. Und wenn ich die Registry nehme dann ist das Teil nicht mehr Portable. Na ja was soll's (Hätte ich mir vorher überlegen sollen) 2 Versionen erstellen macht nicht wirklich sinn. gruss |
AW: Ordnung muss sein (LaunchBar)
Ich kann mir das ja mal anschauen. Aber nicht sofort, frühestens heute Abend.
|
AW: Ordnung muss sein (LaunchBar)
Ohne jetzt Werbung machen zu wollen, aber mir gefiel Tortoise auch nie so wirklich und suchte eine Cross Plattform Alternative da ich fast ausschliesslich auf dem Mac arbeite und dort fast nur mit GIT zu tun habe, da fand ich GitKraken eigentlich sehr nett für Github und auch ziemlich einfach zu bedienen, kannst Du dir ja mal ansehen: https://www.gitkraken.com/
|
AW: Ordnung muss sein (LaunchBar)
Zitat:
Wie also zwischen den Pfaden hin und her schalten wenn ich den aktuellen Pfad beim erstellen der Anwendung nicht kenne. Schalte ich zur Laufzeit hin und her ist das kein Problem das kommt erst wenn die Anwendung neu gestartet wird. Aus der Registry kann ich diesen vorher auslesen ohne ihn erst ermitteln zu müssen. Nur dann ist die Anwendung nicht mehr Portable. gruss |
AW: Ordnung muss sein (LaunchBar)
Ich mache es so
Erster Start - Benutzer wird gefragt, ob die Anwendung portabel sein soll -- Ja --- Ini im Programmverzeichnis erstellen -- Nein --- Ini im Roamingverzeichnis erstellen Zweiter Start - Prüfen, ob es die Ini-Datei im Programmverzeichnis gibt -- Ja --- laden und weiter -- Nein --- Prüfen, ob die Ini-Datei im Roamingverzeichnis liegt -- Ja --- laden und weiter -- nein --- siehe "Erster Start" Ich hoffe alles ist richtig erklärt. Im Form von Code sieht das alles sehr viel einfacher aus. |
AW: Ordnung muss sein (LaunchBar)
Extra einen Dialog erstellen nur um abzufragen wo die INI gespeichert werden soll.
Warum habe ich dann ein Menu Eintrag ? Das sollte bzw. muss damit auch funktionieren. EDIT: Wobei ich nicht sage das deine Lösung nicht funktioniert das tut sie. ;) gruss |
AW: Ordnung muss sein (LaunchBar)
Hier ist mal ein neues Menu.
Das ist kein Popupmenu sondern ein PopupWindow. Mich interessiert nur ob unter W10 die Schrift korrekt dargestellt wird. Sie muss 100% Zentriert sein also mittig von oben zum jeweiligen Icon. Da noch keine Funktionen für die Einträge selbst implementiert sind muss die Anwendung mit dem Taskmanager beendet werden. Ich lösche das später wieder. gruss |
AW: Ordnung muss sein (LaunchBar)
Liste der Anhänge anzeigen (Anzahl: 1)
Da gibts nur einen Crash...
|
AW: Ordnung muss sein (LaunchBar)
Zitat:
Glaube nicht so wie ich das sehen kann ;) Alleine Funktionieren die nicht. gruss |
AW: Ordnung muss sein (LaunchBar)
Liste der Anhänge anzeigen (Anzahl: 1)
Das stimmt, wenn ich die beiden Dateien ins Originalverzeichnis kopiere und starte kommt der schwarze Balken nicht mehr, nur mehr das "OverTheTaskBar funktioniert nicht mehr..." - Fenster und wenn ich das wegklicke gibts einen Anwendungsfehler
|
AW: Ordnung muss sein (LaunchBar)
Zitat:
Es macht keinen Sinn für ein System zu Arbeiten das man selbst nicht verwendet. Damit ist es so fertig wie es ist. Danke! Lösche das Archiv wieder. gruss |
AW: Ordnung muss sein (LaunchBar)
Neue und hoffentlich letzte Version hochgeladen. (Nach insgesamt 98 Downloads, könnte besser sein LOL)
Das ist die Final Version. Wenn jetzt noch Probleme auftauchen unter W10 mit dem Menu dann müsst ihr es leider selbst beheben. Tut mir schrecklich leid :duck: Ohne W10 ist das zu viel stress. gruss |
AW: Ordnung muss sein (LaunchBar)
Mit der .ini geht es viel einfacher. Wie hat SneakyBagels ja auch schon geschrieben, einfach auf Vorhandensein der lokalen .ini prüfen und diese anlegen oder löschen beim Umschalten:
Delphi-Quellcode:
Das Halt habe ich einmal herausgenommen, denn wenn du eine Exception wirfst, wird das ja ohnehin nicht mehr ausgeführt.
procedure InitPath(const ACheckPortable: Boolean);
var sIniFile: string; ExeName: String; FilePath: String; begin ExeName := ExtractFileName(ChangeFileExt(ParamStr(0), '')); FilePath := ExtractFilePath(ParamStr(0)); sIniFile := FilePath + ExeName + '.ini'; if ACheckPortable then Prop.Portable := FileExists(sIniFile); if Prop.Portable then OTTBIni := TIniFile.Create(sIniFile) else begin DeleteFile(sIniFile); // falls auf nicht portable geschaltet wurde UserAppDataDir := GetSpecialFolder(CSIDL_APPDATA); // Direktory erstellen wenn nicht vorhanden if not ForceDirectories(UserAppDataDir + '\BrewIdeas\OTTB') then raise Exception.Create('Cannot create' + UserAppDataDir + '\BrewIdeas\OTTB'); OTTBIni := TIniFile.Create(UserAppDataDir + '\BrewIdeas\OTTB' + '\OTTB.ini') end; end; procedure LoadINI; begin InitPath(True); Prop.SoundActive := OTTBIni.ReadBool('OTTB Option', 'SoundActive', true); Prop.ShortCutVisible := OTTBIni.ReadBool('OTTB Option', 'ShortCutVisible', false); CreateIcon.ShowDesktopIcons(Prop.ShortCutVisible); OTTBIni.Free; end; function SaveINI: Boolean; var OldErrorMode: Integer; begin InitPath(False); OldErrorMode := SetErrorMode(SEM_FAILCRITICALERRORS); try OTTBIni.WriteBool('OTTB Option', 'SoundActive', Prop.SoundActive); OTTBIni.WriteBool('OTTB Option', 'ShortCutVisible', Prop.ShortCutVisible); finally Result := True; SetErrorMode(OldErrorMode); OTTBIni.Free; end; end; |
AW: Ordnung muss sein (LaunchBar)
@jaenicke Danke werde es mal einbauen und testen.
Interesse mal das neue Menu zu testen ? Dann lade ich die 2 Dateien nochmal hoch. EDIT: Funktioniert Super! :thumb: Habe da keine vernünftige lösung erarbeiten können. (Mir viel einfach nichts ein) gruss |
AW: Ordnung muss sein (LaunchBar)
Jetzt könnte ich gerade, ja.
|
AW: Ordnung muss sein (LaunchBar)
Zitat:
Und die Anwendung kann dann nur über den taskmanager entfernt werden wenn es nicht kracht ;) Das Menu (Popup Window) kannst du wegschalten wenn du auf dem Desktop klickst. gruss |
AW: Ordnung muss sein (LaunchBar)
Die Positionierung des vertikalen Teils sieht so deutlich besser aus, der ist nun genau mittig. Am Rest hat sich abgesehen von der Breite insgesamt um ein paar Pixel nix geändert und nach dem Öffnen des Menüs friert die Anwendung ein, sprich auch Hovern im Menü passiert nicht.
|
AW: Ordnung muss sein (LaunchBar)
Zitat:
Wie ist es denn mit dem Text? Ist dieser zentriert oder immer noch versetzt wie beim normalen Menu. Bei mir sieht es so aus. Einfrieren tut da nix wenn das Window geöffnet wird setze ich die Bar auf enabled False damit keine Eingaben mehr getätigt werden können wie beim normalen PopUpMenu. Klicks du auf den Desktop mit der linken Maus sollte das WIndow schließen und die Bar wieder bedienbar sein. Zitat:
gruss |
AW: Ordnung muss sein (LaunchBar)
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Anhang 47555 |
AW: Ordnung muss sein (LaunchBar)
Wie gesagt ist noch nicht fertig.
Eventuell muss ich das ebenfalls auf Sprites aufbauen da ich sonst nicht weis wie ich die einzelnen Menü Punkte verwalten soll. Ich muss vorher sicher sein das die Schrift richtig angezeigt wird, vorher macht es keinen sinn das weiter zur verfolgen. gruss |
AW: Ordnung muss sein (LaunchBar)
Zitat:
So wie bei mir das PopupMenu. Ich denke W10 hat da probleme bzg. der DPI oder ähnlichen. Keine Ahnung warum das teil da rumzickt. Ok dann kann ich das weiter verfolgen. Danke für die Hilfe. gruss |
AW: Ordnung muss sein (LaunchBar)
Hoffe das der Mist jetzt mit W10 läuft.
Neue Version ist oben. Ich habe jetzt keine Rücksicht auf das Worker\Progman Problem genommen. Sorry hatte mit dem Menu genug zu tun. Wenn es da noch ärger gibt dann korrigiert es selbst. ;) Es muss exakt so wie auf dem Shot aussehen, tut es das ? Dann ist das in Ordnung. 1 Monat Arbeit ist genug dafür ;) Es wird nur noch die Schrift gezeichnet der Rest ist im Hintergrund Bild wundert euch also nicht das die Icons sich nicht mehr ändern Es reicht wenn die Schrift selbst es tut abhängig vom Status. Wenn ihr nichts mehr findet dann ist das Teil jetzt fertig. gruss |
AW: Ordnung muss sein (LaunchBar)
Auch wenn es einige nervt trotz allem noch eine neue Version hochgeladen.
Änderungen siehe oben. so etwas muss natürlich noch mit rein.
Delphi-Quellcode:
Das hat jedoch keinerlei Auswirkung ohne die neue DLL im Archiv.
procedure TMainApp.DestroyChildControls;
var Path: string; begin Path := FolderResource + 'PopUpWindow\OTTB.ttf'; RemovePrivateFontCollection(Path); FPrivateFont := nil; panBackgoundFrame.DestroyWindow; panBackgoundFrame := nil; btnAbout.DestroyWindow; btnAbout := nil; btnIconFrame.DestroyWindow; btnIconFrame := nil; btnIconBack.DestroyWindow; btnIconBack := nil; btnWallpaper.DestroyWindow; btnWallpaper := nil; btnShortCut.DestroyWindow; btnShortCut := nil; btnSound.DestroyWindow; btnSound := nil; btnConfig.DestroyWindow; btnConfig := nil; btnEdit.DestroyWindow; btnEdit := nil; btnCleanUp.DestroyWindow; btnCleanUp := nil; btnRestart.DestroyWindow; btnRestart := nil; btnPortable.DestroyWindow; btnPortable := nil; btnClose.DestroyWindow; btnClose := nil; end; Deshalb der neue Upload. gruss |
AW: Ordnung muss sein (LaunchBar)
Zitat:
|
AW: Ordnung muss sein (LaunchBar)
Zitat:
gruss |
AW: Ordnung muss sein (LaunchBar)
Zitat:
Ich denke es macht einen großen Unterschied ob du W10 neu aufgesetzt, von Vista oder W7 aktualisiert hast. Das verursacht höchstwahrscheinlich dein WorkerW Problem da wirst du auch mit anderen Programmen auf widerstand stoßen. Anders kann ich mir nicht vorstellen das andere diese Probleme nicht haben. Ist jetzt nicht auf das Programm bezogen sondern generell. Wollte das nur nochmal ansprechen. gruss |
AW: Ordnung muss sein (LaunchBar)
Zitat:
Deshalb ist auch der Filter auf Windows 10 im genannten Quelltext nicht zielführend, sondern nur eine Kombination aus beidem. Sprich eine Suche am StandardOrt und dann unter workerw. |
AW: Ordnung muss sein (LaunchBar)
Zitat:
Wenn ich im NET nach WorkerW suche finde ich einige Einträge dazu. Ich frage mich nur wie kann es sein das auf verschiedene W10 Versionen das Problem auftritt. Woher kommt das würde mich interessieren. Der eine hat Progman der andere WorkerW wieder bei anderen wechselt die Zorder von WorkerW zu Progman ständig usw.. gruss |
AW: Ordnung muss sein (LaunchBar)
Zitat:
https://www.autoitscript.com/forum/t...class-workerw/ Es scheint etwas mit der Virtualisierung für Themeumschaltung oder ähnliches zu tun zu haben. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:10 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