Delphi-PRAXiS
Seite 4 von 9   « Erste     234 56     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Spectragram (https://www.delphipraxis.net/190309-spectragram.html)

jaenicke 22. Sep 2016 07:14

AW: Spectragram
 
Unter Windows 10 funktioniert das Programm nicht.

Das ist aber ein Paradebeispiel dafür, dass die Versionsprüfung nicht ein Problem behebt, sondern schafft. Das ist genau der Grund weshalb Microsoft ab Windows 8 nicht mehr immer die reale Versionsnummer ausliefert, wenn man sie abfragt, sondern einfach die, für die das Programm laut Manifest erstellt wurde.

Du prüfst nämlich leider nicht, ob es sich mindestens um Vista handelt, sondern, ob es Vista oder Windows 7 ist. Wenn du das korrigierst (und nebenbei ist die Prüfung dann auch mit Bordmitteln viel einfacher), funktioniert der Dialog auch unter Windows 10:
Delphi-Quellcode:
// alt
  if (SKAERO_GetOS = OsVista) or (SKAERO_GetOS = OsWindows7) and SKAERO_IsCompositionEnabled then

// neu
  if (Win32MajorVersion >= 6) and SKAERO_IsCompositionEnabled then
Beim zweiten Aufruf des Öffnen-Dialogs knallt es dann aber in der SK_Aero.dll. Da es immer unterschiedliche Pointerprobleme zu sein scheinen, sieht das aber nicht nach einem Problem mit Windows aus, sondern nach einem logischen Problem.

Die Datei kann ich dann zwar auswählen (allerdings finde ich den Standarddialog sehr viel ergonomischer), aber danach passiert nichts mehr.

// EDIT:
Dass bei einem Multimediatool wie diesem Aero vorausgesetzt wird, sollte auch kein Problem sein. Denn wenn die Grafikkarte so schwach ist, dass man kein Aero einsetzen kann, wird so ein Tool meistens ohnehin nicht benutzt werden. Und wenn die Grafikkarte schnell genug für Aero ist, wird man normalerweise den Rechner nicht durch Deaktivieren von Aero langsamer machen.

Zitat:

Zitat von EWeiss (Beitrag 1348368)
AppData/Brewideas/Spectragram.

Warum sauber deinstallieren wird doch nichts Installiert. ;)

Das ist auch eine Installation, nur dass dein Programm selbst die Konfigurationsdateien dort ablegt. Das Problem ist in so einem Fall, dass es so eben keinen Deinstaller gibt und die Dateien dort liegen bleiben, wenn man das Programm löscht.
Für ein Projekt wie dieses hier ist das allerdings natürlich kein Problem.

EWeiss 22. Sep 2016 07:32

AW: Spectragram
 
Zitat:

Du prüfst nämlich leider nicht, ob es sich mindestens um Vista handelt, sondern, ob es Vista oder Windows 7 ist. Wenn du das korrigierst (und nebenbei ist die Prüfung dann auch mit Bordmitteln viel einfacher), funktioniert der Dialog auch unter Windows 10:
Ja das weis ich Danke.. ;)
Es soll auch nicht mit W10 Arbeiten aus dem einfachen Grund weil es unter W10 keine DWM API mehr gibt.

Das Problem liegt auch eher hier! und hat nichts mit der Abfrage <> W10 zu tun.

Delphi-Quellcode:
{$REGION 'procedure AddBrowseForFileControls'}
procedure AddBrowseForFileControls(hMain: HWND);
begin
  BrowseForFile := CTRL_BrowseForFileCreate;
  BrowseForFile.Width := 612;
  BrowseForFile.Height := 412;
  BrowseForFile.PanelImagePath := SKAERO_FOLDER + 'Panel.png';
  BrowseForFile.SysImagePath := SysButton.ImagePath;
  BrowseForFile.PanelDirListImagePath := SKAERO_FOLDER + 'Frame3d.png';
  BrowseForFile.ListSelectedImg := SKAERO_FOLDER + 'List\ListSelect.png';
  BrowseForFile.SkinConfigFile := PWideChar(DefSkin);
  BrowseForFile.ComboButtonImagePath := SKAERO_FOLDER + 'List\combo.png';
  BrowseForFile.ButtonImagePath := SKAERO_FOLDER + 'BTN_Push.png';
  BrowseForFile.VPageImg := SKAERO_FOLDER + 'VScroll\VSPage.png';
  BrowseForFile.VBotImg := SKAERO_FOLDER + 'VScroll\VSBot.png';
  BrowseForFile.VUpImg := SKAERO_FOLDER + 'VScroll\VSUp.png';
  BrowseForFile.VThumbImg := SKAERO_FOLDER + 'VScroll\VSThumb.png';
  BrowseForFile.FileListMask := '.mp3';
  BrowseForFile.UseVistaBlur := CheckAeroBlur.GetCheckButtonStatus(CheckAeroBlur.Handle);
  BrowseForFile.UseVistaCrystal := CheckCrystal.GetCheckButtonStatus(CheckCrystal.Handle);
  BrowseForFile.GlassOpacity := trbGlassOpacity.GetTrackValue(trbGlassOpacity.Handle);
  BrowseForFile.CreateWindow(hMain);
end;
{$ENDREGION}
in der uControls.

ersetzen durch
Delphi-Quellcode:
procedure AddBrowseForFileControls(hMain: HWND);
begin
  BrowseForFile := CTRL_BrowseForFileCreate;
  BrowseForFile.Width := 612;
  BrowseForFile.Height := 412;
  BrowseForFile.PanelImagePath := SKAERO_FOLDER + 'Panel.png';
  BrowseForFile.SysImagePath := SysButton.ImagePath;
  BrowseForFile.PanelDirListImagePath := SKAERO_FOLDER + 'Frame3d.png';
  BrowseForFile.ListSelectedImg := SKAERO_FOLDER + 'List\ListSelect.png';
  BrowseForFile.SkinConfigFile := PWideChar(DefSkin);
  BrowseForFile.ComboButtonImagePath := SKAERO_FOLDER + 'List\combo.png';
  BrowseForFile.ButtonImagePath := SKAERO_FOLDER + 'BTN_Push.png';
  BrowseForFile.VPageImg := SKAERO_FOLDER + 'VScroll\VSPage.png';
  BrowseForFile.VBotImg := SKAERO_FOLDER + 'VScroll\VSBot.png';
  BrowseForFile.VUpImg := SKAERO_FOLDER + 'VScroll\VSUp.png';
  BrowseForFile.VThumbImg := SKAERO_FOLDER + 'VScroll\VSThumb.png';
  BrowseForFile.FileListMask := '.mp3';
 
  if Assigned(CheckAeroBlur) then
  begin
    BrowseForFile.UseVistaBlur := CheckAeroBlur.GetCheckButtonStatus(CheckAeroBlur.Handle);
    BrowseForFile.UseVistaCrystal := CheckCrystal.GetCheckButtonStatus(CheckCrystal.Handle);
    BrowseForFile.GlassOpacity := trbGlassOpacity.GetTrackValue(trbGlassOpacity.Handle);
  end;
  BrowseForFile.CreateWindow(hMain);
end;
Die Checkboxen bzw.. diese Controls sind alle NIL wenn Aero nicht existiert.
CheckAeroBlur, CheckCrystal, trbGlassOpacity

Deshalb kracht es.
Wundert mich das sich der Dialog bei dir überhaupt öffnet.
Zumal die DriveList Combo mit DWM in Kombination LayeredWindow erstellt wird.
Was bedeutet das die aufgeklappte Combo Transparent ist.

Das geht nun mal nicht mit W10 oder deaktivierter Desktopgestaltung dementsprechend kann man dann auch kein Laufwerk auswählen.

Zitat:

Dass bei einem Multimediatool wie diesem Aero vorausgesetzt wird, sollte auch kein Problem sein. Denn wenn die Grafikkarte so schwach ist, dass man kein Aero einsetzen kann, wird so ein Tool meistens ohnehin nicht benutzt werden. Und wenn die Grafikkarte schnell genug für Aero ist, wird man normalerweise den Rechner nicht durch Deaktivieren von Aero langsamer machen.
Dazu kann ich nur sagen das dieses Tool 0% CPU bei mir verwendet.
Inklusive der ganzen Visuellen Komponenten.
Ich denke eher es ist uninteressant für diejenigen die W10 benutzen da gibt es nun mal kein DWM mehr ein Grund warum ich kein W10 verwende.
Man hätte das aktiviert lassen können es war immer möglich es auszuschalten.
Aber gut es ist wie es ist.

Zitat:

allerdings finde ich den Standarddialog sehr viel ergonomischer
Ich finde das auch.
Das Problem ist nur diesen auf meinen Visuellen Style anzupassen ;)
Zitat:

wird so ein Tool meistens ohnehin nicht benutzt werden
Das ist richtig zumal es für die LIB im ganzen > W7 eh zu spät ist.
Aber für die 6 Jahre die ich vielleicht noch habe reicht es mir ;) Weltuntergang LOL. :)


gruss

jaenicke 22. Sep 2016 08:28

AW: Spectragram
 
Wie kommst du darauf, dass es unter Windows 10 keinen DWM mehr gibt? Die Transparenz usw. funktionieren dort problemlos, also die von dir genannten Controls.

EWeiss 22. Sep 2016 08:41

AW: Spectragram
 
Zitat:

Zitat von jaenicke (Beitrag 1348405)
Wie kommst du darauf, dass es unter Windows 10 keinen DWM mehr gibt? Die Transparenz usw. funktionieren dort problemlos, also die von dir genannten Controls.

Ich habe gelesen das es kein Aero mehr gibt.
Sage mir das ich falsch liege ;)

Transparenz!
Zur Information ist teilweise emuliert da ich den Hintergrund in das Control kopiere.
Das hat aber nichts mit Aero zu tun.

Wenn unter W10 CheckAeroBlur NIL ist dann wird DWM nicht unterstützt.
Denn darauf hin prüfe ich ja.

Delphi-Quellcode:
DwmIsCompositionEnabled := GetProcAddress(hDwmapi, 'DwmIsCompositionEnabled');


gruss

TiGü 22. Sep 2016 08:50

AW: Spectragram
 
Delphi-Quellcode:
program DWM_API_TEST;

{$APPTYPE CONSOLE}

{$R *.res}


uses
  System.SysUtils,
  Winapi.Windows;

function IsCompositionEnabled: boolean;
var
  DwmIsCompositionEnabled: function(pfEnabled: PBoolean): HRESULT; stdcall;
  hDwmapi: THandle;
  Enabled: BOOL;
begin
  Result := False;
  if (Win32Platform = VER_PLATFORM_WIN32_NT) and (Win32MajorVersion >= 6) then
  begin
    hDwmapi := LoadLibrary('dwmapi.dll');
    if hDwmapi <> 0 then
      try
        DwmIsCompositionEnabled := GetProcAddress(hDwmapi, 'DwmIsCompositionEnabled');
        if Assigned(DwmIsCompositionEnabled) then
          Result := (DwmIsCompositionEnabled(@Enabled) = 0) and Enabled;
      finally
        FreeLibrary(hDwmapi);
      end;
  end;
end;

begin
  try
    Writeln(IsCompositionEnabled);
    Readln;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.
Liefert unter Windows 10 Professional Version 1607 Build 14393.187 ein True zurück.
Geht also!

Aviator 22. Sep 2016 08:58

AW: Spectragram
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von EWeiss (Beitrag 1348406)
Zitat:

Zitat von jaenicke (Beitrag 1348405)
Wie kommst du darauf, dass es unter Windows 10 keinen DWM mehr gibt? Die Transparenz usw. funktionieren dort problemlos, also die von dir genannten Controls.

Ich habe gelesen das es kein Aero mehr gibt.
Sage mir das ich falsch liege ;)

Also im TaskManager wird zumindest mal noch der Prozess angezeigt.

Ich hatte mal gelesen, dass es ab Windows 8 sogar gar nicht mehr möglich sein soll, Windows ohne DWM zu betreiben weil dort alles drüber gemacht wird. Wäre also sehr verwunderlich, wenn das jetzt plötzlich doch nicht mehr vorhanden wäre.

EWeiss 22. Sep 2016 09:06

AW: Spectragram
 
Zitat:

Zitat von Aviator (Beitrag 1348410)
Zitat:

Zitat von EWeiss (Beitrag 1348406)
Zitat:

Zitat von jaenicke (Beitrag 1348405)
Wie kommst du darauf, dass es unter Windows 10 keinen DWM mehr gibt? Die Transparenz usw. funktionieren dort problemlos, also die von dir genannten Controls.

Ich habe gelesen das es kein Aero mehr gibt.
Sage mir das ich falsch liege ;)

Also im TaskManager wird zumindest mal noch der Prozess angezeigt.

Ich hatte mal gelesen, dass es ab Windows 8 sogar gar nicht mehr möglich sein soll, Windows ohne DWM zu betreiben weil dort alles drüber gemacht wird. Wäre also sehr verwunderlich, wenn das jetzt plötzlich doch nicht mehr vorhanden wäre.

Dann sollte es unter W10 auch funktionieren.
Was ich machen könnte alle abfragen der Os Version mal ändern so wie von jaenicke vorgeschlagen.
Ob es dann noch läuft keine Ahnung.

Dann müssten die Controls auch angezeigt werde.
Siehe pic

gruss

EWeiss 22. Sep 2016 09:27

AW: Spectragram
 
Habe es nochmal in geänderter form hochgeladen.
Es wird jetzt auf

Delphi-Quellcode:
if (Win32MajorVersion >= 6) and SKAERO_IsCompositionEnabled then


hin geprüft.
Wenn es dann läuft na dann lohnt sich die Weiterentwicklung ja doch noch.

gruss

EWeiss 22. Sep 2016 09:59

AW: Spectragram
 
Sorry für den Post..
Habe es nochmals hochgeladen.
Funktioniert nun mit Deaktivierter Desktopgestaltung.

Das einzige Problem das dann auftritt ist das die Combobox der DriveList wenn sie aufgeklappt wird nicht mehr Transparent ist.
Damit kann man aber zum testen mit leben.

Bei Deaktivierter Desktopgestaltung funktioniert natürlich auch Aero nicht..
Das sollte klar sein.

gruss

Erdbär 22. Sep 2016 10:39

AW: Spectragram
 
Startet unter/im aktuellen W10x64 Pro in Originalauflösung statt 125%zoom. Dann Ende Gelände beim Öffnen-Dialog.

Kann den "Siebenerschrott" - auf Wunsch hin - auch unter
- Win 8 (64bit, Pro)
- Win 8.1 (64bit, Pro)
- Win 10 (32bit, Home)
testen.

Darüberhinaus auch unter/in VMs:
- Win XP Pro (32bit)
- Win 07 Pro (32bit)
- Linux Mint (64bit)
- Linux Arch (64bit)

Allerdings bin ich auch kein Testpilot für Leute, die in einer Windows7-Zeitschleife murmeltierartig festhängen, Herr EWeiss :?


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:01 Uhr.
Seite 4 von 9   « Erste     234 56     Letzte »    

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