AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Ordnung muss sein (LaunchBar)
Thema durchsuchen
Ansicht
Themen-Optionen

Ordnung muss sein (LaunchBar)

Ein Thema von EWeiss · begonnen am 17. Mai 2017 · letzter Beitrag vom 14. Nov 2021
Antwort Antwort
Seite 9 von 32   « Erste     789 101119     Letzte »    
EWeiss
Projekt entfernt..

Geändert von EWeiss (24. Jul 2019 um 04:47 Uhr)
 
EWeiss
 
#81
  Alt 15. Jun 2017, 18:31
Liegt wohl wirklich eher unter Windows 10. Das Problem scheint zu sein, dass unter Windows 10 den Desktop-Ordner nicht gefunden wird (daher bleibt die Leiste auch leer).
Selbst mit der OTTB.txt/.config wird nichts angezeigt.
Wie kann der nicht gefunden werden?
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.
sDeskTopAdm := GetSpecialFolder(CSIDL_DESKTOP) + '\';


gruss
  Mit Zitat antworten Zitat
EWeiss
 
#82
  Alt 15. Jun 2017, 18:33
Zu mindestens solltest du das so machen, dann gibts keinen Absturz, wenn keine Elemente in der Liste sind:

Delphi-Quellcode:
  if (Sprites.Count > ID_FIRST) And (Sprites[ID_FIRST].Left < 40) then
    Sprites[ID_LEFT].Visible := True
  else
    Sprites[ID_LEFT].Visible := false;
Nö das ist definitiv falsch! Sorry
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

sDeskTopAdm := GetSpecialFolder(CSIDL_DESKTOP) + '\';
Das sollte dir zurück liefern.
C:\Users\UserName\Desktop\ (Admin) oder C:\Users\Public\Desktop\ (Public).

gruss

Geändert von EWeiss (15. Jun 2017 um 18:41 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

 
Delphi 11 Alexandria
 
#83
  Alt 15. Jun 2017, 19:42
GetSpecialFolder liefert schon einen Backslash am Ende. Der ist daher dann doppelt vorhanden. Besser ist in so einem Fall IncludeTrailingPathDelimiter zu benutzen:
Delphi-Quellcode:
sDeskTopAdm := IncludeTrailingPathDelimiter(GetSpecialFolder(CSIDL_DESKTOP));
// fügt das Pfadtrennzeichen hinzu, wenn es noch nicht da ist
Bei mir funktioniert die aktuell angehängte Version nun jedenfalls mit Windows 10 und auch Icons sind nun da.
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);
Sebastian Jänicke

Geändert von jaenicke (15. Jun 2017 um 19:50 Uhr)
  Mit Zitat antworten Zitat
Whookie

 
Delphi 10.3 Rio
 
#84
  Alt 15. Jun 2017, 19:52
Hab da jetzt noch mal reingeschaut und das unter Windows 10 zum Laufen gebracht:

uShortCut.pas
Delphi-Quellcode:
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);
  ...
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).
  Mit Zitat antworten Zitat
EWeiss
 
#85
  Alt 15. Jun 2017, 19:56
GetSpecialFolder liefert schon einen Backslash am Ende. Der ist daher dann doppelt vorhanden. Besser ist in so einem Fall IncludeTrailingPathDelimiter zu benutzen:
Delphi-Quellcode:
sDeskTopAdm := IncludeTrailingPathDelimiter(GetSpecialFolder(CSIDL_DESKTOP));
// fügt das Pfadtrennzeichen hinzu, wenn es noch nicht da ist
Bei mir funktioniert die aktuell angehängte Version nun jedenfalls mit Windows 10 und auch Icons sind nun da.
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.
Ok daran könnte es liegen.
Ich muss den Backlash hier anhängen warum auch immer sonst geht es nicht.
Werde es ändern

Und neue Version hochladen.

Zitat:
Die Koordinaten stimmen jedenfalls. Diese sind bei beiden Zeichenvorgängen gleich. Warum das so falsch aussieht, kann ich aktuell auch nicht sagen.
Sorry W10 ist immer noch ein Experimentier System. Nicht schlagen LOL.

Zitat:
Das Problem mit dem leicht verschobenen Menütext ist noch da, stört aber nicht wirklich.
Mich stört das enorm will das weg haben
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:
if ImgBack = 0 then
  ImgBack := GDIP_CreateImageFromFile(FolderResource + 'Menu\MEN_Center.png');
jetzt steppe ich eine Zeile weiter.
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

Geändert von EWeiss (15. Jun 2017 um 20:26 Uhr)
  Mit Zitat antworten Zitat
EWeiss
 
#86
  Alt 15. Jun 2017, 19:59
Hab da jetzt noch mal reingeschaut und das unter Windows 10 zum Laufen gebracht:

uShortCut.pas
Delphi-Quellcode:
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);
  ...
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).
Kannst du gerne tun aber ich ändere nichts am Code bzg. der Überprüfung von der System Version.
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
  Mit Zitat antworten Zitat
Whookie

 
Delphi 10.3 Rio
 
#87
  Alt 15. Jun 2017, 20:09
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:
  ItemCount := SendMessage(Prop.ListViewHandle, LVM_GETITEMCOUNT, 0, 0);

  if ItemCount <> 0 then
  begin
erst gar nicht ausgeführt!
  Mit Zitat antworten Zitat
EWeiss
 
#88
  Alt 15. Jun 2017, 20:15
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:
  ItemCount := SendMessage(Prop.ListViewHandle, LVM_GETITEMCOUNT, 0, 0);

  if ItemCount <> 0 then
  begin
erst gar nicht ausgeführt!
Mag ja sein. (Glaube ich dir auch)
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
  Mit Zitat antworten Zitat
EWeiss
 
#89
  Alt 15. Jun 2017, 20:40
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

Geändert von EWeiss (15. Jun 2017 um 21:41 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

 
Delphi 11 Alexandria
 
#90
  Alt 15. Jun 2017, 21:52
Ist das gleiche Menu wie hier.
http://www.delphipraxis.net/192329-kvideo-player.html Tritt das dort auch auf ?
Das Programm stürzt ab, wenn ich mit der rechten Maustaste klicke oder auf Play.

Was mich mal interessieren würde hängt sich bei dir die IDE beim Debuggen des Menüs auf?
Nein, funktioniert reibungslos. Solche Probleme hatte ich bis Delphi XE6 aber immer wieder mal. Allerdings meistens nicht immer an einer bestimmten Stelle, sondern nur manchmal.

Das mit dem Backslash hat bei mir überhaupt keine Auswirkung unter Windows 10.
Das stimmt, Windows akzeptiert das trotzdem.

das eigentliche Problem liegt darin, das unter Windows 10 der 'SHELLDLL_DefView' nicht mehr unter 'Progman' liegt sondern in einem Fenster der Klasse "WorkerW".
Kann ich nicht nachvollziehen:
win10handle.png
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.

Hier noch eine andere Version die auf Klassen basiert. (Mache ich nicht gern unter NON-VLC)
Das sollte eine bessere Struktur bringen (habe noch nicht hineingeschaut).

Das obige Archiv wird in dem Fall ersetzt.
Wie wäre es denn, wenn du den Quelltext schlicht z.B. auf GitHub stellst? So wie ich hier zum Beispiel auch:
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
Sebastian Jänicke
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 9 von 32   « Erste     789 101119     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:55 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