[Gelöst] StickyWindow auf Win10 erscheint nicht auf Desktop

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
TheCube
Beiträge: 150
Registriert: 20.07.2010 23:59
Computerausstattung: Risen 3400G 16MB Win10-64Bit
Wohnort: NRW

[Gelöst] StickyWindow auf Win10 erscheint nicht auf Desktop

Beitrag von TheCube »

Hallo zusammen,
ich habe mir eine (immer auf dem Desktop sichtbare) Balkenanzeige gebastelt. (x86 compiliert)
Was unter Win7 (x86 & x64) wie erwartet funktioniert, erscheint unter Win10 (x64) nur als
Programmicon in der Taskleite. Hält man mit der Maus länger darauf, erscheint das Minifenster
immerhin/nur in der korrekt laufenden Voransicht.
Es gibt hier einen Thread mit einem Stickwindow/Toolbar Problem, der half mir aber nicht.

Hat jemand einen Zaubertrick mein Stickywindow nach Programmstart auch unter Win10
direkt auf dem Desktop erscheinen zu lassen ?

Beispielprogramm:

Code: Alles auswählen

Enumeration
   #Window
   #ImageGadget
   #Image
   #Font
EndEnumeration

#DarkGreen  = $004400
#DarkYellow = $004040
#DarkRed    = $000044
#HiGreen    = #Green
#HiYellow   = $00dddd   ; Weil #Yellow zu grell ist
#HiRed      = #Red

; =========================================== MAIN ====================================================

Value=68

ExamineDesktops()
OpenWindow(#Window, DesktopWidth(0)-330, 2, 126, 14, "Fenster", #PB_Window_BorderLess) : StickyWindow(#Window, #True) 

If LoadFont(#Font, "Arial", 8)  : Else : End: EndIf
If CreateImage(#Image, 126, 14) : ImageGadget(#ImageGadget, 0, 0, 126, 14, ImageID(#Image)) : Else : End: EndIf

If StartDrawing(ImageOutput(#Image))
  DrawingMode(#PB_2DDrawing_Transparent)
  DrawingFont(FontID(#Font))
  Box(0,0,126,14,$000000)
  Box( 2,2,50,10,#HiGreen)
  Box(52,2,30,10,#DarkYellow)
  Box(82,2,19,10,#DarkRed)
  Box(52,2,Value-50,10,#HiYellow)
  DrawText(104,0,Str(Value),$CCCCCC)
  StopDrawing()
EndIf

SetGadgetState(#ImageGadget, ImageID(#Image))

Repeat
  
  Event = WaitWindowEvent()
  
  Select Event
      
    Case #PB_Event_CloseWindow
      
      End
      
    Case #PB_Event_LeftDoubleClick  ; Ins Fenster (ohne Gadget) doppelklicken (Aktuell unmöglich da Fenster auf imagegadget-Größe.)
      End
         
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #ImageGadget 
          Select EventType()
            Case #PB_EventType_LeftClick        : Debug "Klick mit der linken Maustaste"
            Case #PB_EventType_RightClick       : Debug "Klick mit der rechten Maustaste"
            Case #PB_EventType_LeftDoubleClick  : Debug "Doppelklick mit der linken Maustaste" : End
            Case #PB_EventType_RightDoubleClick : Debug "Doppelklick mit der rechten Maustaste"
          EndSelect
      EndSelect
      
  EndSelect
  
ForEver
Zuletzt geändert von TheCube am 06.10.2017 18:51, insgesamt 1-mal geändert.
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: StickyWindow auf Windows10 erscheint nicht auf Desktop

Beitrag von RSBasic »

Bei mir funktioniert es unter Windows 10.
Bei dir ist die Balkenanzeige nicht sichtbar? Wenn du auf den Taskleisteneintrag klickst, erscheint das kleine Fenster oben danach oder nie?
Verwendest du bei deinem Windows 10 spezielle Programme, die die Titelleiste der Fenster modifiziert wie z.B. Ultramon o.ä.?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

Re: StickyWindow auf Windows10 erscheint nicht auf Desktop

Beitrag von tft »

Hallo,
kann es sein das du mehr Monitore als einen hast. Bei multi Monitoring funktioniert einiges nicht ganz so wie man denkt.
Bei mir erscheint der Balken im Desktop 2. Dieser ist der in der Mitte. Bei Negativem offset funktioniert es nicht.

Gruss TFT
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
Benutzeravatar
TheCube
Beiträge: 150
Registriert: 20.07.2010 23:59
Computerausstattung: Risen 3400G 16MB Win10-64Bit
Wohnort: NRW

Re: StickyWindow auf Windows10 erscheint nicht auf Desktop

Beitrag von TheCube »

Danke für eure Antworten ... hat mir insofern geholfen das es eben funktionieren müsste.

Es handelt sich nur um einen Monitor, nämlich das Laptop-TFT selbst.
Stimmt, mehrere Monitore müsste ich später auch handlen.

>>Bei dir ist die Balkenanzeige nicht sichtbar? Nein.
>>Wenn du auf den Taskleisteneintrag klickst, erscheint das kleine Fenster oben danach oder nie? Nie.
>>Verwendest du bei deinem Windows 10 spezielle Programme, die die Titelleiste der Fenster modifiziert? Nein.

Die Lösung des unsichtbaren Balkens ist jedoch peinlich einfach (gerade gefunden):
DesktopWidth(0) gibt bei mir korrekte 1920 zurück.
Abzüglich der 330 sollte Openwindow also ziemlich rechts fast ganz oben das Fenster zeigen.
Leider war der Darstellungsgrössenregler in den Windowseinstellungen auf 125% eingestellt, das Stickywindow
wurde deshalb ausserhalb des sichtbaren Bereiches geöffnet.
:coderselixir:

Wenn jemand ein Codeschnipsel für das Auslesen des Darstellungsgrössenregler hätte,
würde es meinem Post immerhin einen schönen Abschluß geben :wink:
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: [Gelöst] StickyWindow auf Win10 erscheint nicht auf Desk

Beitrag von RSBasic »

TheCube hat geschrieben:Wenn jemand ein Codeschnipsel für das Auslesen des Darstellungsgrössenregler hätte
http://www.rsbasic.de/winapi-library/ Bild http://www.rsbasic.de/aktualisierung/wi ... mitteln.pb
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
TheCube
Beiträge: 150
Registriert: 20.07.2010 23:59
Computerausstattung: Risen 3400G 16MB Win10-64Bit
Wohnort: NRW

Re: [Gelöst] StickyWindow auf Win10 erscheint nicht auf Desk

Beitrag von TheCube »

:allright: Danke.
Ach, in Winapi/Desktop/DPI ermitteln ist es gelistet ... hatte ich zu schludrig gesucht und übersehen.
Benutzeravatar
TheCube
Beiträge: 150
Registriert: 20.07.2010 23:59
Computerausstattung: Risen 3400G 16MB Win10-64Bit
Wohnort: NRW

Re: [Gelöst] StickyWindow auf Win10 erscheint nicht auf Desk

Beitrag von TheCube »

Hmm, zu früh gefreut. :(
Egal ob Win10 auf 100% oder 125% Darstellung eingestellt, es wird bei mir immer 96 DPI zurückgegeben.
Ist das WinAPI-Codeschnipsel "DPI ermitteln.pb" nicht immer (oder nicht mehr) verlässlich ?
Btw., welcher Indexparameter ist 88 eigentlich ?

Code: Alles auswählen

; GetDeviceCaps:  https://msdn.microsoft.com/en-us/library/windows/desktop/dd144877(v=vs.85).aspx

MessageRequester("","DPI: "+Str(GetDeviceCaps_(GetDC_(GetDesktopWindow_()),88)),0)  ; WinAPI-Library
MessageRequester("","DPI: "+Str(GetDeviceCaps_(GetDC_(#Null),88)),0)                ; Nach MSDN genauso ok ?

; DPI   Setting
; 96 =  100%       Umrechnung DPI->Setting : Faktor ca. 1,043
; 120 = 125%
; 144 = 150%
; 192 = 200%
; 240 = 250%
; 288 = 300%
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: [Gelöst] StickyWindow auf Win10 erscheint nicht auf Desk

Beitrag von ccode_new »

Hallo TheCube,

Das beschriebene Verhalten ist normal.
Die API-Funktion gibt normal immer 96 DPI zurück.

Siehe hier: https://msdn.microsoft.com/de-de/library/dn528846.aspx
Diese API gibt immer 96 zurück, außer das Tool, mit dem sie aufgerufen wird, ist als nicht mit DPI-Werten kompatibel registriert. Dies erfordert das Hinzufügen der folgenden XML-Datei zum Manifest für das Hilfsprogramm.

<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>Per monitor</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
> Der Wert "88" entspricht übrigens der Konstante: #LOGPIXELSX
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Benutzeravatar
TheCube
Beiträge: 150
Registriert: 20.07.2010 23:59
Computerausstattung: Risen 3400G 16MB Win10-64Bit
Wohnort: NRW

Re: [Gelöst] StickyWindow auf Win10 erscheint nicht auf Desk

Beitrag von TheCube »

Danke ccode_new, deine Infos waren sehr erhellend ...
die Manifest-Sache probiere ich mal aus, ist ja nochmal eine ganz eigene Baustelle.

Aber ich glaube immernoch das das Auslesen des %-Reglers (bzw. der Wert in der Registry)
eine direktere Alternative wäre ....
Antworten