Seite 39 von 43
Re: WinAPI Library (Snippets) (1.052)
Verfasst: 02.01.2016 17:09
von RSBasic
Danke für deinen nützlichen Code.

Sowas ähnliches gibt es bereits:
http://www.rsbasic.de/aktualisierung/wi ... mitteln.pb
Nur nicht als Modul. Deinen Code kann ich aber trotzdem hinzufügen.
Re: WinAPI Library (Snippets) (1.077)
Verfasst: 04.01.2016 00:50
von RSBasic
WinAPI Library 1.4.2 wurde veröffentlicht (25 neue Beispielcodes)
Hinzugefügt:
CalendarGadget:
DateGadget:
Dateien:
ExplorerListGadget:
ExplorerTreeGadget:
Gadgets:
Laufwerke:
ListIconGadget:
OpenWindow:
Sonstige:
Strings und Variablen:
System:
TextGadget:
TreeGadget:
WebGadget:
Online: http://www.rsbasic.de/winapi-library
Offline: Updaten

Re: WinAPI Library (Snippets) (1.077)
Verfasst: 06.03.2016 14:52
von Bisonte
Kurze Frage : Geht nur mir das so, oder ist der Server unter
www.rsbasic.de nicht mehr verfügbar ?
Webseite lässt sich nicht öffnen (Verbindung zum Server fehlgeschlagen)
WinAPILibrary lässt sich nicht aktualisieren (Verbindungsproblem zum Server)
Re: WinAPI Library (Snippets) (1.077)
Verfasst: 06.03.2016 14:57
von Kiffi
ja, scheint momentan offline zu sein (evtl. Wartungsarbeiten?).
http://www.downforeveryoneorjustme.com/
Grüße ... Peter
Re: WinAPI Library (Snippets) (1.077)
Verfasst: 06.03.2016 15:14
von RSBasic
Ja, die Seite ist leider aus unbekanntem Grund nicht erreichbar. Eine E-Mail habe ich bereits geschrieben. Telefonisch sind sie leider nur Mo-Fr erreichbar.

Re: WinAPI Library (Snippets) (1.077)
Verfasst: 06.03.2016 16:11
von RSBasic
Die Seite geht jetzt wieder.
Re: WinAPI Library (Snippets) (1.077)
Verfasst: 14.01.2017 19:25
von Rudi
Weil ich das grade noch hier rumliegen habe: Registry auf Veränderung überwachen (RegNotifyChangeKeyValue_):
Code: Alles auswählen
EnableExplicit
#REG_NOTIFY_ALL = #REG_NOTIFY_CHANGE_LAST_SET|#REG_NOTIFY_CHANGE_ATTRIBUTES|#REG_NOTIFY_CHANGE_NAME|#REG_NOTIFY_CHANGE_SECURITY
Define Key, hEvent, Error
Procedure.s LastError(Error)
Protected *MemoryID = AllocateMemory(#MAX_PATH), Message$
If *MemoryID
If FormatMessage_(#FORMAT_MESSAGE_FROM_SYSTEM, #Null, Error, #Null, *MemoryID, #MAX_PATH, #Null)
Message$ = PeekS(*MemoryID)
EndIf
FreeMemory(*MemoryID)
EndIf
ProcedureReturn Message$
EndProcedure
MessageRequester("", "Eine Änderung unter HKEY_CURRENT_USER / AppEvents vornehmen!")
Repeat
If RegOpenKeyEx_(#HKEY_CURRENT_USER, "AppEvents", #Null, #KEY_NOTIFY, @Key) = #ERROR_SUCCESS
hEvent = CreateEvent_(#Null, #True, #False, #Null)
If hEvent
Error = RegNotifyChangeKeyValue_(Key, #True, #REG_NOTIFY_ALL, hEvent, #True)
If Error = #ERROR_SUCCESS
If WaitForSingleObject_(hEvent, #INFINITE) <> #WAIT_FAILED
Debug "Registry wurde unter HKEY_CURRENT_USER / AppEvents verändert!"
EndIf
Else
LastError(Error)
EndIf
CloseHandle_(hEvent)
Else
LastError(GetLastError_())
EndIf
RegCloseKey_(Key)
Else
LastError(GetLastError_())
EndIf
Delay(1000)
ForEver
MS-Link:
https://msdn.microsoft.com/en-us/librar ... 85%29.aspx
Re: WinAPI Library (Snippets) (1.077)
Verfasst: 26.04.2017 13:23
von tft
Hallo,
an dieser Stelle eine herzliches danke. Deinen Mühen haben mir einiges an Arbeit gespart.
Aber hier habe ich ein Problem. Das sollte eigentlich Funktionieren aber bei mir gibts eine
Fehlermeldung.
Code: Alles auswählen
;Autor: nco2k, WeePe
EnableExplicit
Procedure.s sGetXPCDKey()
Protected *bDigitalProductID
Protected *bProductKey.byte
Protected ilByte.l
Protected lDataLen.l
Protected hKey.l
Protected Byte.l
Protected nCur.l
Protected sCDKey.s
Protected ilKeyByte.l
*bDigitalProductID = AllocateMemory(164)
*bProductKey.byte = AllocateMemory(15)
ilByte.l
lDataLen.l
hKey.l
If RegOpenKey_(#HKEY_LOCAL_MACHINE, "SOFTWARE\MICROSOFT\Windows NT\CurrentVersion", @hKey) = #ERROR_SUCCESS
lDataLen = 164
If RegQueryValueEx_(hKey, "DigitalProductId", 0, "REG_BINARY", *bDigitalProductID, @lDataLen) = #ERROR_SUCCESS
For ilByte = 52 To 66
Byte = PeekB(*bDigitalProductID + ilByte) & 255
PokeB(*bProductKey + ilByte - 52, Byte)
Next ilByte
RegCloseKey_(hKey)
Else
Debug("Data nicht gefunden")
RegCloseKey_(hKey)
ProcedureReturn ""
EndIf
Else
Debug("Schlüssel nicht gefunden")
ProcedureReturn ""
EndIf
Debug("Erzeuge String")
Dim bKeyChars.l(23)
bKeyChars(0) = Asc("B")
bKeyChars(1) = Asc("C")
bKeyChars(2) = Asc("D")
bKeyChars(3) = Asc("F")
bKeyChars(4) = Asc("G")
bKeyChars(5) = Asc("H")
bKeyChars(6) = Asc("J")
bKeyChars(7) = Asc("K")
bKeyChars(8) = Asc("M")
bKeyChars(9) = Asc("P")
bKeyChars(10) = Asc("Q")
bKeyChars(11) = Asc("R")
bKeyChars(12) = Asc("T")
bKeyChars(13) = Asc("V")
bKeyChars(14) = Asc("W")
bKeyChars(15) = Asc("X")
bKeyChars(16) = Asc("Y")
bKeyChars(17) = Asc("2")
bKeyChars(18) = Asc("3")
bKeyChars(19) = Asc("4")
bKeyChars(20) = Asc("6")
bKeyChars(21) = Asc("7")
bKeyChars(22) = Asc("8")
bKeyChars(23) = Asc("9")
nCur.l
sCDKey.s
ilKeyByte.l
ilByte.l
Byte.b
For ilByte = 24 To 0 Step -1
nCur = 0
For ilKeyByte = 14 To 0 Step -1
Byte = PeekB(*bProductKey + ilKeyByte) & 255
nCur = ((nCur & 255) * 256) ! Byte
PokeB(*bProductKey + ilKeyByte, (Int(nCur / 24)))
nCur = nCur % 24
Next ilKeyByte
sCDKey = Chr(bKeyChars(nCur)) + sCDKey
If ilByte % 5 = 0 And ilByte <> 0
sCDKey = "-" + sCDKey
EndIf
Next ilByte
ProcedureReturn sCDKey
EndProcedure
MessageRequester("","Windows-Seriennummer: "+sGetXPCDKey(),0)
bis auf die Debug Ausgabe entspricht es der Vorlage aus der Lib.
Der Schlüssel und die daten sind in der Registrie vorhanden. Habe ich mit RegEd
geprüft.
Gruss TFT
Re: WinAPI Library (Snippets) (1.077)
Verfasst: 26.04.2017 13:56
von RSBasic
Hallo tft,
meinst du diese Fehlermeldng:
Zeile 76: Variable bereits mit einem anderen Typ deklariert: Byte.
Bezüglich dieser Zeile:
PB meckert, weil die Variable oben als Datentyp "Long" definiert wurde und in der Zeile 76 "Byte".
Im Originalcode lautet die Zeile aber:
Und damit funktioniert es. Hast du die Zeile in deinem Editor nachträglich geändert? Wenn nicht, dann war es vielleicht mal vor langer Zeit falsch drin und bei dir wird noch eine ältere PB-Version im Browser angezeigt.
Oder meinst du eine andere Fehlermeldung?
Re: WinAPI Library (Snippets) (1.077)
Verfasst: 26.04.2017 14:43
von tft
Hallo,
da habe ich wohl irgendwas probiert ???? aber das ist nicht das Problem
Code: Alles auswählen
If RegQueryValueEx_(hKey, "DigitalProductId", 0, "REG_BINARY", *bDigitalProductID, @lDataLen) = #ERROR_SUCCESS
diese Zeile gebt einen Fehler aus. Die Funktion RegQueryValueEx_ gibt <> #ERROR_SUCCESS zurück. Was zu einem Abruch der
Funktion führt.
Fehler Code 2
Gruss TFT