WinAPI Library (Snippets) (1163 Beispielcodes)

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: WinAPI Library (Snippets) (1.052)

Beitrag von RSBasic »

Danke für deinen nützlichen Code. :allright:
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.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Bisonte
Beiträge: 2427
Registriert: 01.04.2007 20:18

Re: WinAPI Library (Snippets) (1.077)

Beitrag 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)
PureBasic 6.04 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom​​
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: WinAPI Library (Snippets) (1.077)

Beitrag von Kiffi »

ja, scheint momentan offline zu sein (evtl. Wartungsarbeiten?).

http://www.downforeveryoneorjustme.com/

Grüße ... Peter
Hygge
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: WinAPI Library (Snippets) (1.077)

Beitrag 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. :(
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: WinAPI Library (Snippets) (1.077)

Beitrag von RSBasic »

Die Seite geht jetzt wieder.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Rudi
Beiträge: 143
Registriert: 22.04.2010 18:28
Wohnort: #PB_Any

Re: WinAPI Library (Snippets) (1.077)

Beitrag 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
Win7 (x64)PB 5.4x (x86)5,7 Windows-LeistungsindexSuche
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: WinAPI Library (Snippets) (1.077)

Beitrag 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
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
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: WinAPI Library (Snippets) (1.077)

Beitrag von RSBasic »

Hallo tft,

meinst du diese Fehlermeldng:
Zeile 76: Variable bereits mit einem anderen Typ deklariert: Byte.
Bezüglich dieser Zeile:

Code: Alles auswählen

Byte.b
PB meckert, weil die Variable oben als Datentyp "Long" definiert wurde und in der Zeile 76 "Byte".
Im Originalcode lautet die Zeile aber:

Code: Alles auswählen

Byte.l
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?
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: WinAPI Library (Snippets) (1.077)

Beitrag 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
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 :-)
Antworten