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 1 von 2  1 2      
EWeiss
(Gast)

n/a Beiträge
 
#1

AW: Ordnung muss sein (LaunchBar)

  Alt 15. Jun 2017, 17:48
Hab es auch mal versucht (Win10/64), leider kriege ich auch einen Absturz beim Start.

Der Grund bei mir scheint daran zu liegen, das über die WM_PRINT Message DockBar.DrawDockBar aufgerufen wird und dort (ab Zeile 128)

Delphi-Quellcode:
 if Sprites[ID_FIRST].Left < 40 then
    Sprites[ID_LEFT].Visible := True
  else
    Sprites[ID_LEFT].Visible := false;
ausgeführt wird. ID_FIRST = 6 Sprites enthält aber nur 5 Elemente.
Danke werde das mal gegenprüfen.
Müsste eigentlich 0 > 5 sein also 6

Verwende mal meine Config ob das Problem dann behoben ist.

gruss

Geändert von EWeiss (15. Jun 2017 um 18:05 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: Ordnung muss sein (LaunchBar)

  Alt 15. Jun 2017, 18:09
W10 macht nur Ärger.

Bei mir ist alles in Ordnung.
Zitat:
ausgeführt wird. ID_FIRST = 6 Sprites enthält aber nur 5 Elemente.
0 >- 5 Grafiken für das Window.
6 = Papierkorb also das 7 Element.

Siehe Shot!
ID_LEFT ist der kleine Pfeil der sichtbar wird wenn das erste Sprite(Icon) < Left 40 ist.
Also es liegt kein Programm Fehler vor.

gruss

Geändert von EWeiss (11. Jul 2019 um 15:48 Uhr)
  Mit Zitat antworten Zitat
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
450 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Ordnung muss sein (LaunchBar)

  Alt 15. Jun 2017, 18:22
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.
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
450 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Ordnung muss sein (LaunchBar)

  Alt 15. Jun 2017, 18:28
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;
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Ordnung muss sein (LaunchBar)

  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
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
9.983 Beiträge
 
Delphi 12 Athens
 
#6

AW: Ordnung muss sein (LaunchBar)

  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
AppCentral

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

n/a Beiträge
 
#7

AW: Ordnung muss sein (LaunchBar)

  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
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
450 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Ordnung muss sein (LaunchBar)

  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).
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

AW: Ordnung muss sein (LaunchBar)

  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

Registriert seit: 3. Mai 2006
Ort: Graz
450 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: Ordnung muss sein (LaunchBar)

  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!
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 05:11 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-2025 by Thomas Breitkreuz