![]() |
Spectragram
Projekt entfernt..
|
AW: Spectragram
Windows 7 Starter
Spectragram.part1 Beim Klicken auf die Schaltfläche, um eine MP3 Datei auszuwählen:
Code:
Wo merkt sich dein Programm eigentlich welchen Hintergrund ich eingestellt habe? Ich würde das Programm gerne wieder irgendwie sauber von meinem Rechner bekommen.
---------------------------
Anwendungsfehler --------------------------- Exception EAccessViolation in Modul Spectragram.exe bei 00052135. Zugriffsverletzung bei Adresse 00452135 in Modul 'Spectragram.exe'. Lesen von Adresse 00000000. --------------------------- OK --------------------------- Nachtrag: Gleiches Problem mit der Exe in Spectragram.part2 |
AW: Spectragram
Zitat:
AppData/Brewideas/Spectragram. Warum sauber deinstallieren wird doch nichts Installiert. ;) Mal geschaut warum das nicht läuft.. Source ist doch dabei. Hmmm.. Nun gut. Kann ich schließen öffnen wann ich will kann kein Problem feststellen. Kein Problem hier siehe Pic. ;) Zitat:
Und es zwingend nötig ist das Archiv Part1 und part2 zu laden Part1 wird extrahiert der Rest folgt automatisch. Ist der erste Part fertig werden die restlichen Teile aus dem Part2 Archiv extrahiert. Und die EXE ist die gleiche denn sie gehört zum Archiv (Spectragram) das lediglich geplittet wurde weil ich hier keine Anhänge mehr als 5MB hochladen kann. gruss |
AW: Spectragram
Liste der Anhänge anzeigen (Anzahl: 3)
Ich besitze kein Entpacker der Rar Archive entpacken kann. Der Freecommander kann jedes Archiv einzeln ohne Probleme entpacken. Keine Ahnung , ob er erkennt, dass es ein Multipartarchiv ist. Ich bekomme entsprechend zwei Ordner. Siehe Anhang. In beiden Ordner befinden sich wohl identische Dateien.
Ich kann dir nur berichten, was bei mir passiert. Beweis siehe Anhang. Debuggen kann ich es auf dem Netbook nicht, da ich hier kein Delphi installiert habe. Und ich weiß gar nicht, ob sich dein Code mit dem BDS2006 überhaupt kompilieren lässt. Es kann ja sein, dass es bei dir funktioniert. Bei mir tut es das jedenfalls nicht. Und ich bin bestimmt nicht zu doof eine Exe zu starten und einen Button anzuklicken. Auch wenn nichts installiert wird und ich es einfach lösche, bleibt doch noch Müll übrig, den ich eben auch gerne loswerden wollen täte. Sonst habe ich nach zehn Testprogramme nur noch Müll auf dem Rechner, der nicht mehr benötigt wird. Und ich würde dich bitte deinen Ton mir gegenüber etwas zu ändern. Ich bin kein vollkommener Idiot. |
AW: Spectragram
Zitat:
Wo war ich unfreundlich.. Ich kann nichts dafür wenn dir nicht klar ist das es hier um ein Multipart Archiv geht. Sorry aber das weis meine Nichte schon und die ist 5. Das es nicht starte wird wohl daran liegen das du alle Design spezifische Dinge in deinem System deaktiviert hast. Da geht kein Aero oder sonstiges das kann dann zu deinem Fehler führen. Aber das kann ich selber testen. Aber kein Problem Jedenfalls war ich nicht unfreundlich und als Idiot habe ich dich auch nicht angesprochen. Bitte sachlich bleiben. Besonders als Mod! Zitat:
Es ist aber offensichtlich das der Freecommander wohl keine Multipart Archive entpacken kann denn da fehlt der Ordner "Src" (Source). Oder ich habe ihn nicht gesehen auf deinen Bildern. Was ich noch feststellen muss durch die Veränderung der Anhänge das addieren Unterschiedlicher Zahlen zu jedem Archiv ist das Multipart Archiv quasi zerstört. Dann bitte wieder umbenennen nach spectragram.part1.rar spectragram.part2.rar Ansonsten funktioniert das Entpacken nicht. gruss |
AW: Spectragram
Der Ton macht die Musik:
Zitat:
Windows 7 Starter kennt kein Aero. Und auf meinem Windows 7 Home habe ich es deaktiviert. Es würde also auch da abstürzen, weil es zwingend Aero voraussetzt? |
AW: Spectragram
Zitat:
Ok werde ich mir merken das du ein Boahh im Text nicht ausstehen kannst. Das war nichts anderes als ein erstaunter Aufruf.. Es sieht so aus das wenn ich mit meinem Dialog auf Aero hin überprüfe das der Dialog hier den Absturz verursacht. Nein wird wohl nicht gehen deshalb läuft es auch unter W10 nicht. Jain.. du hast Aero deaktiviert aber im System selbst gibt es trotzdem DWM oder nicht? (W7 Home) In deinem Window ist zumindest "Crystal" und "Blur Mode" deaktiviert. (Was auch richtig ist.) Das Fenster wird dann wie unter XP behandelt wo es auch kein DWM gibt. gruss |
AW: Spectragram
OK. Dein Boah ey hat bei mir den Eindruck hinterlassen, dass du genervt warst, weil ich anscheinend unfähig bin ein Multipartarchiv zu erkennen. Da habe ich mich etwas angepisst gefühlt. Vergessen wir das.
Der Freecommander macht wohl folgendes (und das ist etwas blöd vom Freecommander): Er erkennt dass es sich um ein Multipartarchiv handelt egal welchen Teil man entpackt. So weit so gut. Jetzt der blöde Teil: Entpackt man in Unterordner, benennt er die Ordner nach dem Archivteil, den man zum Entpacken genommen hat. Daher meine Verwirrung. Der Source Ordner fehlt nicht. In meinen Screenshot sieht man nur den Unterordner bin. Aber warum wird Aero unbedingt benötigt? Du bringst doch deinen eigenen Skinengine mit. Oder benötigt der Skinengine Aero? Das würde es erklären. Also das würde ich irgendwie ändern, man kann wohl kaum erwarten, dass man dafür Aero aktiviert, wenn überhaupt möglich. Ich werde es morgen noch mal auf dem großen Rechner mit Windows 7 Home und deaktivierten Aero probieren. |
AW: Spectragram
Zitat:
Wie du sehen kannst wurden ja bei dir "Crystal" und "Blur Mode" deaktiviert. Der Grund liegt daran weil dein System das nicht unterstützt. Meine Dialoge hingegen prüfen den Status ob das Haupt-Fenster Aero eingeschaltet hat oder nicht. Ich denke das hier im Code ein Fehler vorliegt den ich noch berichtigen muss. Danke so kann ich zumindest das Problem beheben. gruss. |
AW: Spectragram
Was wurde bei mir deaktiviert und woran siehst du das? Ich hatte vorher mal ein paar Hintergründe durch probiert bevor ich eine MP3 auswählen wollte. Das Hintergrundbild wechseln funktioniert ohne Probleme.
|
AW: Spectragram
Zitat:
Fehlen bei dir unter Move Background drei Komponente. 2x Checkboxen und eine Trackbar. Ich habe jetzt mal das hier addiert damit müsste es eigentlich funktionieren.
Delphi-Quellcode:
Mit IsCompositionEnabled lade ich die dwmapi.dll..
if (GetOS = OsVista) or (GetOS = OsWindows7)
and SkinEngine.IsCompositionEnabled then begin
Delphi-Quellcode:
Ich denke das wird aber auch nicht ausreichen, denn was mache ich wenn die DLL nicht existiert dann kracht es auch.
function TSkinEngine.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; Na ja oder auch nicht.. hDwmapi ist ja dann 0 Habe die geänderte DLL nochmals angehängt. Vielleicht geht es ja damit. gruss |
AW: Spectragram
Die sind mir gar nicht aufgefallen.
Na ja, wenn du die DLL nicht laden kannst, dann musst du eben eine Fehlerbehandlung machen. Hinweis ausgeben und das Programm sauber beenden. Schön wäre natürlich ein Fallback, der ohne die DLL auskommt, so dass man das Programm zu mindest noch nutzen kann. |
AW: Spectragram
Nope. Stürzt bei Klick auf den Button ab. AberMmoment mal. Am Skinengine kann es nicht liegen. Das Fenster wird ja geskinnt. Das funktioniert ja alles. Der Fehler mit dem Absturz kommt ja erst, wenn der Dateiöffnen Code durch den Klick aufgerufen wird. Da müsste der Fehler zu suchen sein. Hast du irgendwelche Pfade hard gecodet oder so?
|
AW: Spectragram
Zitat:
Obwohl die Behandlung ja dadurch schon ausgelöst wird da die Abfrage False zurück liefert bei einem hDwmapi = 0 Den Fallback hätte ich dann mit der Abfrage von IsCompositionEnabled erstellt. Bin mir jetzt nicht sicher ob wenn er die DLL nicht findet ein Exeption ausgelöst wird. Oder ein Handle 0 ausreicht. gruss |
AW: Spectragram
LoadLibrary ist eine API Funktion und wird somit keine Exception auslösen. Der Rückgabewert ist ein Handle auf die DLL. Ist das Handle null, konnte sie nicht geladen werden.
|
AW: Spectragram
Zitat:
DriveList DirList FileList. Bei der DriveList werden alle Festplatten addiert.
Delphi-Quellcode:
also nichts festes.
procedure TSkinDriveList.ListDrive(hList: hWnd);
var FileInfo: SHFILEINFO; AllDriveStrings: LongWord; Drives: array [0 .. 128] of Widechar; pDrive: PChar; IconCount: Integer; begin IconCount := 1; DriveList := TStringList.Create; AllDriveStrings := GetLogicalDriveStrings(SizeOf(Drives), Drives); if AllDriveStrings = 0 then exit; if AllDriveStrings > SizeOf(Drives) then raise Exception.Create(SysErrorMessage(ERROR_OUTOFMEMORY)); pDrive := Drives; while pDrive^ <> #0 do begin SHGetFileInfo(pDrive, FILE_ATTRIBUTE_NORMAL, FileInfo, SizeOf(FileInfo), SHGFI_DISPLAYNAME Or SHGFI_SYSICONINDEX or SHGFI_SMALLICON or SHGFI_ICON); if GetDriveType(pDrive) = DRIVE_NO_ROOT_DIR or DRIVE_FIXED then begin DriveList.Add(pDrive); ListAdd(hList, FileInfo.szDisplayName); SetLength(IconHandle, IconCount + 1); IconHandle[IconCount] := FileInfo.HIcon; inc(IconCount); inc(pDrive, 4); end else inc(pDrive, 4); end; end; Mit GetCurrentDirectory wird der letzte Pfad zugewiesen der verwendet wurde. Wenn keiner existiert dann ist es der Pfad wo sich die Skins drin befinden. Die Fileliste addiert die Dateien abhängig von dem Pfad der mit DirList gesetzt wurde. Vorausgesetzt es finden sich MP3 Dateien darin. Hard gecoded sollte da eigentlich nichts sein. gruss |
AW: Spectragram
Zitat:
Handle 0 sollte dann reichen. Ich werde mal den Pfad der Anwendung ändern also auf eine andere Platte. Mal sehen ob ich das reproduzieren kann. EDIT: Nop.. Kann den bin Ordner hinschieben wo ich will, Voraussetzung ist natürlich das ich vorher die INI Datei lösche da hier ein fest eingeschriebener Pfad zum letzten Skin enthalten ist. Danach startet alles wie es soll. gruss |
AW: Spectragram
Ein paar Dinge.
Delphi-Quellcode:
Und dann machst du das:
Drives: array [0 .. 128] of Widechar;
pDrive: PChar;
Delphi-Quellcode:
Du weißt einem PChar ein Array vom Typ WideChar zu. Keine Ahnung, ob das so in Ordnung ist. Kommt mir auf den ersten Blick komisch vor.
pDrive := Drives
Delphi-Quellcode:
Würde ich vor der ersten Verwendung mit ZeroMemory "ausnullen". Schlägt nämlich SHGetFileInfo fehl, du prüfst es nicht, dann steht in FileInfo Schrott drin, mit dem du dann weiter arbeitest.
FileInfo: SHFILEINFO;
Wo wird die Stringliste wieder freigegeben? Besser: Der Aufrufer erzeugt die StringListe, übergibt sie als Parameter und gibt sie wieder frei. Dann kann man sie auch sauber in einem Ressourcenschutzblock verpacken. Erstellen und Freigeben in einer Routine macht es auch übersichtlicher. |
AW: Spectragram
Zitat:
Auch das mit dem ZeroMemory werde ich noch hinzufügen sind so kleine Dinge die man leicht übersieht im Eifer des Gefechtes. gruss |
AW: Spectragram
Rückgabewert von SHGetFileInfo prüfen!
Mit der StringListe nicht routineübergreifend arbeiten! Ja, das ist so eine Sache. Eigentlich müsste der Code crashen, tut er aber bei Alice nicht, weil bei ihr die Belegung des Adressraums glücklicherweise passt und nichts wichtiges überschieben oder freigeben wird. Bei Bobby ist der Adressraum anders organsiert und da crasht es dann. |
AW: Spectragram
Zitat:
Vorher geht es nicht weil ich die Laufwerke die in dieser Liste enthalten sind verwende solange wie der Dialog geöffnet ist. Wenn ich die Liste vorher freigebe dann kracht es.
Delphi-Quellcode:
Der geänderte part.
destructor TSkinDriveList.Destroy;
begin UnSubClass(Handle); FreeAndNil(DriveList); FreeAndNil(PropList); inherited Destroy; end;
Delphi-Quellcode:
gruss
procedure TSkinDriveList.ListDrive(hList: hWnd);
var FileInfo: SHFILEINFO; AllDriveStrings: LongWord; Drives: array [0 .. 128] of Widechar; pDrive: PWideChar; IconCount: Integer; begin IconCount := 1; ZeroMemory(@FileInfo, sizeof(SHFILEINFO)); DriveList := TStringList.Create; AllDriveStrings := GetLogicalDriveStrings(SizeOf(Drives), Drives); if AllDriveStrings = 0 then exit; if AllDriveStrings > SizeOf(Drives) then raise Exception.Create(SysErrorMessage(ERROR_OUTOFMEMORY)); pDrive := Drives; while pDrive^ <> #0 do begin SHGetFileInfo(pDrive, FILE_ATTRIBUTE_NORMAL, FileInfo, SizeOf(FileInfo), SHGFI_DISPLAYNAME Or SHGFI_SYSICONINDEX or SHGFI_SMALLICON or SHGFI_ICON); if GetDriveType(pDrive) = DRIVE_NO_ROOT_DIR or DRIVE_FIXED then begin DriveList.Add(pDrive); ListAdd(hList, FileInfo.szDisplayName); SetLength(IconHandle, IconCount + 1); IconHandle[IconCount] := FileInfo.HIcon; inc(IconCount); inc(pDrive, 4); end else inc(pDrive, 4); end; end; |
AW: Spectragram
Ich dachte an so was:
Delphi-Quellcode:
procedure AuswahlFenster;
var sl: TStringList; begin sl := TStringList.Create; try ListeFuellen(sl); // mach was mit sl finally sl.Free; end; end; procedure ListeFuellen(sl: TStringList); begin //... end; |
AW: Spectragram
Ich könnte den Lösungsansatz mal versuchen, möglich das ich dann einiges umstrukturieren muss.
EDIT: Glaube das geht so einfach nicht. Ich verwende die DriveList(TStringlist) übergreifen. Bsp. in WM_LBUTTONUP
Delphi-Quellcode:
Das kann ich so einfach nicht umstricken..
Atom := GlobalAddAtom(PWideChar(DriveList.Strings[nItem]));
SendMessage(DirListHandle, WM_COMMAND, FILL_DIRECTORY, Atom); DirStrPath := DriveList.Strings[nItem]; gruss |
AW: Spectragram
Finde ich übersichtlicher. Dann muss man nicht suchen, wo sie wieder freigegeben wird. Und je übersichtlicher, desto weniger Fehler können sich einschleichen. ;)
|
AW: Spectragram
Zitat:
Siehe mein editierter Beitrag. gruss |
AW: Spectragram
Wo finde ich den Code in den Sourcen?
|
AW: Spectragram
Zitat:
warte gebe link über PM: Die Komponente liegt unter _ctrl\uBrowseForFile.pas AddChildControls ist der Part wo die Listen addiert werden.. DirList DriveList FileList gruss |
AW: Spectragram
Puh. Ohne Debugger nur mit Notepad++ etwas mühsam. ;)
Delphi-Quellcode:
Du erzeugst dir eine eindeutige Zeichenfolgen (Atom) und schickst sie als LParam von WM_Command an das Fenster DirListHandle. Warum? Und wo finde ich den Code wo die Nachricht hingeschickt wird?
Atom := GlobalAddAtom(PWideChar(DriveList.Strings[nItem]));
SendMessage(DirListHandle, WM_COMMAND, FILL_DIRECTORY, Atom); Ist irgendwie alles so etwas von hinten durch die Brust ins Auge, habe ich das Gefühl. Kann aber auch sein, dass ich noch nicht so gaz durch den Aufbau des Projekts durchgestiegen bin. ;) |
AW: Spectragram
Zitat:
Wird dann hier ausgewertet. DirListBoxProc
Delphi-Quellcode:
Diese drei listen sind miteinander verknüpft
WM_COMMAND:
case LoWord(wP) of FILL_DIRECTORY: begin Buffer := StrAlloc(lP + 1); try DirList.clear; GlobalGetAtomName(lP, Buffer, lP + 1); FindDirs(Buffer, DirList); FillList(DirList); SkinEngine.FInvalidateRect(WinHandle, false); // FileListe löschen if FileListHandle <> 0 then SendMessage(FileListHandle, WM_COMMAND, FILL_FILELIST, GlobalAddAtom (PWideChar(DirStrPath))); finally StrDispose(Buffer); end; end; end; DirList, DriveList, FileList Zitat:
Alle meine Projekt funktionieren bei mir einwandfrei.. Verstehe ich nicht wo das Problem ist. gruss |
AW: Spectragram
Es hat nichts mit meiner Art der Programmierung was die DriveList angeht zu tun.
Es liegt definitiv an Aero. Werde nachher eine aktualisierte DLL hochladen sobald ich das behoben habe. ;) EDIT: Ok diese Anwendung setzt voraus das die Desktopgestaltung nicht ausgeschaltet wird. Ich könnte das beheben macht aber keinen sinn da meine Library darauf ausgelegt ist diese Einstellungen zu verwenden. Die nennt sich nicht umsonst SK_AERO.dll Kein Aero keine Desktopgestaltung dann wird das nix ;) So soll es auch sein. Ich werde da hingehend auch nichts ändern. Es funktioniert wenn die Voraussetzungen gegeben sind. gruss |
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:
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.
// alt
if (SKAERO_GetOS = OsVista) or (SKAERO_GetOS = OsWindows7) and SKAERO_IsCompositionEnabled then // neu if (Win32MajorVersion >= 6) and SKAERO_IsCompositionEnabled then 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:
Für ein Projekt wie dieses hier ist das allerdings natürlich kein Problem. |
AW: Spectragram
Zitat:
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:
in der uControls.
{$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} ersetzen durch
Delphi-Quellcode:
Die Checkboxen bzw.. diese Controls sind alle NIL wenn Aero nicht existiert.
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; 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:
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:
Das Problem ist nur diesen auf meinen Visuellen Style anzupassen ;) Zitat:
Aber für die 6 Jahre die ich vielleicht noch habe reicht es mir ;) Weltuntergang LOL. :) gruss |
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.
|
AW: Spectragram
Zitat:
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 |
AW: Spectragram
Delphi-Quellcode:
Liefert unter Windows 10 Professional Version 1607 Build 14393.187 ein True zurück.
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. Geht also! |
AW: Spectragram
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
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. |
AW: Spectragram
Zitat:
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 |
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 |
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 |
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 04:03 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