Stimmt, Playing ist auch in der VM leer, aber der Amiga Ball ist zu sehen...
Das scheint am Callback von WinHTTP zu liegen, wo das Redirect zum vollständigen Namen aufgelöst wird.
Stimmt, Playing ist auch in der VM leer, aber der Amiga Ball ist zu sehen...
Das scheint am Callback von WinHTTP zu liegen, wo das Redirect zum vollständigen Namen aufgelöst wird.
Das liegt an der GIF Komprimierung (mit WinAPI und COMPRESSION_FORMAT_XPRESS_HUFF komprimiert). Anscheinend nicht mit Win7 kompatible!
Ich habe die eingebettete GIF Animation nun mit der WinAPI und LZNT komprimiert. In der VM funzt es.
Vielen Dank fürs Testen! Ich muss nachforschen, woran das liegt...
@Musashi , BugFix vielen Dank für das Testen. Primär geht es mir, wie die CMD aussieht, d.h. ist das Fenster vollständig mit rot gefüllt und dreht sich der Amiga Ball.
BugFix : ich war auf dieser Seite -> https://www.catalog.update.microsoft.com/search.aspx?q=kb3140245 und habe dort "Update for Windows 7 for x64-based Systems (KB3140245)" heruntergeladen und ausgeführt.
Danach lief das Tool, aber die Ansicht ist nicht wie auf Win10.
Da das Tool per Standard zufällige Titel Nummern aussucht, kommt es leider relativ häufig vor, dass sich hinter den Nummern nichts verbirgt. Zur Not kann man auch "1" drücken, damit vom Neusten zum Ältesten abgespielt wird. Alternativ kann man auch die Exe mit "/order 1" aufrufen.
Könnte jemand mit Win7 als OS auf einer physikalischen Maschine bitte die Radio Station amigaremix.comx.exe starten und ein Screenshot posten bitte?
Falls es nicht auf Win7 läuft, dann bitte Post#18 checken.
DANKE ![]()
Info: Wildcards funktionieren nur mit regulären Ausdrücken (RegEx).
Ich hab's herausgefunden ->Update to enable TLS 1.1 and TLS 1.2 as default secure protocols in WinHTTP in Windows
Nachdem ich "Method 2: Microsoft Update Catalog" angewendet habe, klappt's auch mit dem Tool!
Edit: https://www.autoitscript.com/forum/topic/20…comment-1475488
Hmm, da muss ich wohl Win7 in einer VM installieren.
Danke für eure Unterstützungen.
So, wie sieht es mit dieser Version für Win7 aus?
UEZ :
In unserer SB-Konversation gab es doch mal eine Variante, die auch auf Win7 lief :
Was war denn da anders ?
Nun ja, wenn ich mich noch richtig erinnern kann, dann hatte ich den Check für GetLatestNumber manuell eingetragen, weil ich dachte, dass PCRE Probleme macht, aber hier scheint was mit WinHTTP und Win7 nicht sauber zu funzen. Vielleicht der zweite Aufruf von WinHTTP...
Hmm, das scheint wohl an der Windows Version zu liegen, da der Output von GML doch gut aussieht. Ich frage mich, warum das mit Win7 nicht funzt...![]()
Ok, wie sieht es mit dieser Version aus? Einfach in das Verzeichnis kopieren, wo die Bass.dlls liegen.
Vielen Dank BugFix . Sieht so aus, als ob WinHTTP nicht initialisiert wird, und somit auch der Source Code der Seite nicht gelesen werden kann. Auch die Exe mal mit Admin Rechten gestartet?
Da muss ich mir mal WinHTTP nochmals anschauen, warum das nicht bei euch funzt...
Moin,
ich habe quasi ein Radio Station Player geschrieben, aber wie es aussieht, läuft das Tool nicht auf anderen PCs. Da ich schlecht einen auf meinem PC laufenden Code debuggen kann, bräuchte ich euer Hilfe.
In dem angehängten Zip Archiv befinden sich folgende Dateien:
Bass.dll
Bass64.dll
Radio Station remix.kwed.org x64.exe
Radio Station remix.kwed.org x86.exe
Beim Starten sollte sich die CMD öffen und einige Infos ausgegeben werden:
Z.B:
Initializing WinHTTP...
Initializing Bass.dll...
Getting latest song number...
hSession= 7952936
hConnect= 8252712
hRequest= 8253000
<!-- *** DEBUG: Last visit set. Timestamp: - Converted: 20210315090004 *** --><!DOCTYPE html>
<html lang="en">
<head>
... (HTML Source Code von der Seite remix.kwed.org)
<script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"ad127905cb","applicationID":"929457740","transactionName":"Z1ZWY0VZWUBVBkINDF4cYUVeF15dUABOShNYQw==","queueTime":0,"applicationTime":26,"atts":"SxFVFQ1DSk4=","errorBeacon":"bam.nr-data.net","agent":""}</script></body>
</html>
sSearch = <a class="date" href="/remix/
iPos = 22058
iLatestNumber = 6342
Press any key
Alles anzeigen
Könnt ihr bitte die Ausgabe posten? Vielleicht auch mal mir Admin Rechten starten!
DANKE![]()
Die neuste Version gibt's es immer hier: Radio Station
Probiere es mal damit:
...
_WinAPI_SetDPIAwareness()
Local Const $hFullScreen = WinGetHandle("[TITLE:Program Manager;CLASS:Progman]")
Local Const $aFullScreen = WinGetPos($hFullScreen), $iPosMainScreen = Abs($aFullScreen[0])
Local Const $iW = $aFullScreen[2], $iH = $aFullScreen[3]
Local Const $hBitmap = _ScreenCapture_Capture("", $aFullScreen[0], $aFullScreen[1], $iW - 1, $iH - 1, False)
Local Const $hGUI = GUICreate("", $iW, $iH, $aFullScreen[0], $aFullScreen[1], $WS_POPUP, $WS_EX_TOPMOST)
Local Const $iPic = GUICtrlCreatePic("", 0, 0, $iW, $iH)
_WinAPI_DeleteObject(GUICtrlSendMsg($iPic, $STM_SETIMAGE, $IMAGE_BITMAP, $hBitmap))
GUISetState()
...
Alles anzeigen
So was vielleicht?
#include <GUIConstantsEx.au3>
#include <ScreenCapture.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
; enum _PROCESS_DPI_AWARENESS -> https://msdn.microsoft.com/en-us/library/windows/desktop/dn280512(v=vs.85).aspx
Global Enum $DPI_AWARENESS_INVALID = -1, $PROCESS_DPI_UNAWARE = 0, $PROCESS_SYSTEM_DPI_AWARE, $PROCESS_PER_MONITOR_DPI_AWARE
Global Enum $Context_UnawareGdiScaled = -5, $Context_PerMonitorAwareV2, $Context_PerMonitorAware, $Context_SystemAware, $Context_Unaware
Global Const $WM_DPICHANGED = 0x02E0, $WM_GETDPISCALEDSIZE = 0x02E4
_WinAPI_SetDPIAwareness()
Local Const $hBitmap = _ScreenCapture_Capture("", 0, 0, @DesktopWidth - 1, @DesktopHeight - 1, False)
Local Const $hGUI = GUICreate("", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP, $WS_EX_TOPMOST)
Local Const $iPic = GUICtrlCreatePic("", 0, 0, @DesktopWidth - 1, @DesktopHeight - 1)
_WinAPI_DeleteObject(GUICtrlSendMsg($iPic, $STM_SETIMAGE, $IMAGE_BITMAP, $hBitmap))
GUISetState()
Do
If GUIGetMsg() = $GUI_EVENT_CLOSE Then
_WinAPI_DeleteObject($hBitmap)
GUIDelete($hGUI)
Exit
EndIf
Until False
Func _WinAPI_SetDPIAwareness($hGUI = 0)
Switch @OSBuild
Case 6000 To 9199
If Not DllCall("user32.dll", "bool", "SetProcessDPIAware") Then Return SetError(1, 0, 0) ;requires Vista+ / Server 2008+
Return 1
Case 9200 To 13999
_WinAPI_SetProcessDpiAwareness($PROCESS_PER_MONITOR_DPI_AWARE) ;requires Win 8.1+ / Server 2012 R2+
If @error Then Return SetError(2, 0, 0)
Return 1
Case @OSBuild > 13999
#cs
Context_Unaware = ((DPI_AWARENESS_CONTEXT)(-1)),
Context_SystemAware = ((DPI_AWARENESS_CONTEXT)(-2)),
Context_PerMonitorAware = ((DPI_AWARENESS_CONTEXT)(-3)),
Context_PerMonitorAwareV2 = ((DPI_AWARENESS_CONTEXT)(-4)),
Context_UnawareGdiScaled = ((DPI_AWARENESS_CONTEXT)(-5))
#ce
_WinAPI_SetProcessDpiAwarenessContext($Context_PerMonitorAwareV2, $hGUI, 1)
If @error Then Return SetError(3, @error, 0)
Return 1
EndSwitch
Return -1
EndFunc ;==>_WinAPI_SetDPIAwareness
Func _WinAPI_SetProcessDpiAwareness($DPIAware) ;https://docs.microsoft.com/en-us/windows/desktop/api/shellscalingapi/nf-shellscalingapi-setprocessdpiawareness
Local $aResult = DllCall("Shcore.dll", "long", "SetProcessDpiAwareness", "int", $DPIAware) ;requires Win 8.1+ / Server 2012 R2+
If @error Then Return SetError(1, 0, 0)
Return 1
EndFunc ;==>_WinAPI_SetProcessDpiAwareness
Func _WinAPI_SetProcessDpiAwarenessContext($DPIAwareContext = $Context_PerMonitorAware, $hGUI = 0, $iMode = 1)
$DPIAwareContext = ($DPIAwareContext < -5) ? -5 : ($DPIAwareContext > -1) ? -1 : $DPIAwareContext
$iMode = ($iMode < 1) ? 1 : ($iMode > 3) ? 3 : $iMode
Switch $iMode
Case 1
Local $hDC = _WinAPI_GetDC($hGUI)
Local $aResult1 = DllCall("user32.dll", "int", "GetDpiFromDpiAwarenessContext", "ptr", $hDC) ;requires Win10 v1803+ / Server 2016+
If @error Or Not IsArray($aResult1) Then Return SetError(11, 0, 0)
_WinAPI_ReleaseDC(0, $hDC)
;https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-setprocessdpiawarenesscontext
Local $aResult = DllCall("user32.dll", "Bool", "SetProcessDpiAwarenessContext", "int", $aResult1[0] + $DPIAwareContext) ;requires Win10 v1703+ / Server 2016+
If @error Or Not IsArray($aResult) Then Return SetError(12, 0, 0)
Case 2
;~ If Not $hGUI Then $hGUI = WinGetHandle(AutoItWinGetTitle())
Local $aResult2 = DllCall("user32.dll", "int", "GetWindowDpiAwarenessContext", "ptr", $hGUI) ;requires Win10 v1607+ / no server support
If @error Or Not IsArray($aResult2) Then Return SetError(21, 0, 0)
Local $aResult = DllCall("user32.dll", "Bool", "SetProcessDpiAwarenessContext", "int", $aResult2[0] + $DPIAwareContext) ;requires Win10 v1703+ / Server 2016+
If @error Or Not IsArray($aResult) Then Return SetError(22, 0, 0)
Case 3
Local $aResult31 = DllCall("user32.dll", "ptr", "GetThreadDpiAwarenessContext") ;requires Win10 v1607+ / no server support
If @error Or Not IsArray($aResult31) Then Return SetError(31, 0, 0)
Local $aResult32 = DllCall("user32.dll", "int", "GetAwarenessFromDpiAwarenessContext", "ptr", $aResult31[0]) ;requires Win10 v1607+ / no server support
If @error Or Not IsArray($aResult32) Then Return SetError(32, 0, 0)
Local $aResult = DllCall("user32.dll", "Bool", "SetThreadDpiAwarenessContext", "int", $aResult32[0] + $DPIAwareContext) ;requires Win10 v1607+ / no server support
If @error Or Not IsArray($aResult) Then Return SetError(33, 0, 0)
EndSwitch
Return 1
EndFunc ;==>_WinAPI_SetProcessDpiAwarenessContext
Alles anzeigen
Ich würde es so machen:
from strutils import toHex
type
ARGB* {.union.} = object
c*: tuple[b, g, r, a: uint8]
argb*: uint32
var color: ARGB
color.c.r = 0xAA
color.c.g = 0xBB
color.c.b = 0xCC
color.c.a = 0xFF
echo color.argb.toHex
color.argb = 0x00F0D0C0
echo color.argb.toHex
echo color.c.r.toHex
Alles anzeigen
Einfach um die 32-bit Bandbreite auszunutzen, also mit Alpha Kanal.
Ich hatte auch lange gerätselt, was Union ist, bis ich mir das mal näher angeschaut habe und für diesen Zweck als sehr nützlich gefunden habe.
Union bedeutet einfach, dass ein Speicherbereich in der Strukt (Type) geteilt (shared) wird.
In dem FB Beispiel ist die Strukt nur 4 Bytes groß, d.h. man kann direkt in r, g, b, a schreiben und anschließend col auslesen (32 Bit Wert), ohne vorher die Umwandlung durchführen zu müssen.
Ich weiß nicht, ob NIM diese Datenstruktur überhaupt implementiert hat.