Aktuelle Zeit: 17.10.2017 02:17

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: [Gelöst] StickyWindow auf Win10 erscheint nicht auf Desktop
BeitragVerfasst: 06.10.2017 14:03 
Offline
Benutzeravatar

Registriert: 20.07.2010 23:59
Wohnort: NRW
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:
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.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: StickyWindow auf Windows10 erscheint nicht auf Desktop
BeitragVerfasst: 06.10.2017 14:17 
Offline
Moderator
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Rupture Farms
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.ä.?

_________________
BildBildBildBild
Bild | EnableExplicit ist kostenlos und vermeidet Fehler | Gib Goto keine Chance | Schneller als die Telekom erlaubt | Avira? Nein Danke
WinAPI forever | Bei Problemen bitte Beispielcode posten | Mit Adblock werbefrei, schneller und sicherer surfen | brain.exe ist der beste Schutz | Userlibrary ohne Source = NoGo


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: StickyWindow auf Windows10 erscheint nicht auf Desktop
BeitragVerfasst: 06.10.2017 18:27 
Offline

Registriert: 08.09.2004 20:18
Wohnort: Zürich
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

Code faster than fast.
W10 ,i5 4*3.4 MHz,16 GB Ram,GTX Titan, 3 Monitore UHD
ARDUINO Freak :-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: StickyWindow auf Windows10 erscheint nicht auf Desktop
BeitragVerfasst: 06.10.2017 18:49 
Offline
Benutzeravatar

Registriert: 20.07.2010 23:59
Wohnort: NRW
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:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [Gelöst] StickyWindow auf Win10 erscheint nicht auf Desk
BeitragVerfasst: 06.10.2017 19:00 
Offline
Moderator
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Rupture Farms
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

_________________
BildBildBildBild
Bild | EnableExplicit ist kostenlos und vermeidet Fehler | Gib Goto keine Chance | Schneller als die Telekom erlaubt | Avira? Nein Danke
WinAPI forever | Bei Problemen bitte Beispielcode posten | Mit Adblock werbefrei, schneller und sicherer surfen | brain.exe ist der beste Schutz | Userlibrary ohne Source = NoGo


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [Gelöst] StickyWindow auf Win10 erscheint nicht auf Desk
BeitragVerfasst: 06.10.2017 19:18 
Offline
Benutzeravatar

Registriert: 20.07.2010 23:59
Wohnort: NRW
:allright: Danke.
Ach, in Winapi/Desktop/DPI ermitteln ist es gelistet ... hatte ich zu schludrig gesucht und übersehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [Gelöst] StickyWindow auf Win10 erscheint nicht auf Desk
BeitragVerfasst: 07.10.2017 03:23 
Offline
Benutzeravatar

Registriert: 20.07.2010 23:59
Wohnort: NRW
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:
; 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%


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [Gelöst] StickyWindow auf Win10 erscheint nicht auf Desk
BeitragVerfasst: 07.10.2017 14:50 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
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

Zitat:
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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [Gelöst] StickyWindow auf Win10 erscheint nicht auf Desk
BeitragVerfasst: 07.10.2017 20:45 
Offline
Benutzeravatar

Registriert: 20.07.2010 23:59
Wohnort: NRW
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 ....


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye