WinAPI Library (Snippets) (1163 Beispielcodes)

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: WinAPI Library (Snippets) (548)

Beitrag von Nino »

ts-soft hat geschrieben:Nach soviel Geschenk von mir auch noch einen :mrgreen:

Code: Alles auswählen

Procedure.s FindAssociatedProgram(File.s)
  Protected Result.s = Space(#MAX_PATH)
  Protected Error
  
  Error = FindExecutable_(@File, 0, @Result)
  [...]
Cool, sowas brauche ich gerade. :)
FindExecutable_() kannte ich gar nicht ... da muss ich mir die Information nicht aus der Registry "herauspicken".
Vielen Dank!

Grüße, Nino
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: WinAPI Library (Snippets) (548)

Beitrag von RSBasic »

@ts-soft & @Rudi
Cool, danke :allright:
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: WinAPI Library (Snippets) (548)

Beitrag von ts-soft »

Einer geht noch ...

Code: Alles auswählen

; http://msdn.microsoft.com/en-us/library/bb773836%28v=VS.85%29.aspx

EnableExplicit

Prototype SHMessageBoxCheck(hWnd, Text.s, Caption.s, uType, iDefault, RegVal.s)
Procedure MessageRequesterCheck(Titel.s, Text.s, RegVal.s, Flags = 0)
  Protected hDLL = OpenLibrary(#PB_Any, "Shlwapi.dll")
  Protected SHMessageBoxCheck.SHMessageBoxCheck
  Protected result
 
  CompilerIf #PB_Compiler_Unicode
    SHMessageBoxCheck = GetFunctionEntry(hDLL, 191)
  CompilerElse
    SHMessageBoxCheck = GetFunctionEntry(hDLL, 185)
  CompilerEndIf
  If SHMessageBoxCheck
    result = SHMessageBoxCheck(0, Text, Titel, Flags, #PB_Ignore, RegVal)
  Else
    result = MessageRequester(Text, Titel, Flags)
  EndIf
  CloseLibrary(hDLL)
  ProcedureReturn result
EndProcedure


Select MessageRequesterCheck("Fehler:", "Du bist zu blöd zum Mäuse melken", "{9937FEAC-4F3B-44F0-9D96-20D8F1784479}", #MB_YESNO | #MB_ICONERROR)
  Case #PB_MessageRequester_Yes
    Debug "Siehst es ja wenigstens ein"
  Case #PB_MessageRequester_No
    Debug "Na dann melk mal"
  Case #PB_Ignore
    Debug "Ach, haste mich abgeschaltet ;)"
EndSelect
// geändert
Zuletzt geändert von ts-soft am 14.03.2012 15:58, insgesamt 1-mal geändert.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: WinAPI Library (Snippets) (548)

Beitrag von RSBasic »

@ts-soft
Wow, das ist ja geil. :allright:
Anhand der Class ID kann ich ohne großen Aufwand automatisch solche Meldungen erstellen, die der Anwender ausblenden kann, ohne dass ich extra eine Abfrage erstellen müsste, ob die Meldung bei der nächsten Ausführung angezeigt werden soll.
Danke für den Code :allright:

PS: Um das automatische Ausblenden einer Message zu entfernen, müsste man nur diese Zeichenfolge, die durch das Aktivieren der Option für das dauerhafte Ausblenden erstellt wurde, unter folgendem Pfad löschen:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\DontShowMeThisDialogAgain\{9937FEAC-4F3B-44F0-9D96-20D8F1784479}:NO
Legende: Pfad, Zeichenfolge, Wert

Diese Zeichenfolge müsste man dann manuell mit der WinAPI RegDeleteKey/Ex_() entfernen, oder gibt es da ein Unregister-Befehl für das Aufheben der dauerhafte Ausblendung der Message?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: WinAPI Library (Snippets) (548)

Beitrag von ts-soft »

Unregister Befehl gibts wohl nicht. Nur den RegVal Schlüssel löschen. Dieser Schlüssel sollte einmalig sein,
also am besten eine GUID nehmen:

Code: Alles auswählen

CompilerIf Defined(GUID, #PB_Structure) = #False
Structure GUID
  Data1.l
  Data2.w
  Data3.w
  Data4.b[8]
EndStructure
CompilerEndIf

CompilerIf #PB_Compiler_OS = #PB_OS_Linux
; requires uuid-dev
ImportC "-luuid"
  uuid_generate(*out.GUID)
  uuid_unparse_upper(*uu.GUID, *out)
EndImport
CompilerEndIf

Procedure.s MakeGUID()
  Protected guid.GUID, result.s
  
  CompilerSelect #PB_Compiler_OS
    CompilerCase #PB_OS_Linux
      result = Space(36)
      uuid_generate(@guid)
      uuid_unparse_upper(@guid, @result)
      result = "{" + PeekS(@result, -1, #PB_Ascii) + "}"        
    CompilerCase #PB_OS_Windows
      Protected lpsz.s{76}
      If CoCreateGuid_(@guid) = #S_OK
        result = PeekS(@lpsz, StringFromGUID2_(guid, @lpsz, 76), #PB_Unicode)
      EndIf      
    CompilerDefault
    
  CompilerEndSelect
  
  ProcedureReturn result
EndProcedure

Debug MakeGUID()
Und den Wert von iDefault setzt man sinniger Weise nicht auf 4711 (echt Kölsche Stinkwater), sondern auf
den Wert, der dann Defaultmässig ausgeführt wird, also in diesem Falle auf 6 oder 7!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: WinAPI Library (Snippets) (548)

Beitrag von RSBasic »

Es ist nun endlich vollbracht, es gibt jetzt wieder eine Online-Version: http://www.rsbasic.de/winapi-library/

Viel Spaß. :)
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
rolaf
Beiträge: 3843
Registriert: 10.03.2005 14:01

Re: WinAPI Library (Snippets) (548)

Beitrag von rolaf »

RSBasic hat geschrieben:Es ist nun endlich vollbracht, es gibt jetzt wieder eine Online-Version: http://www.rsbasic.de/winapi-library/

Viel Spaß. :)
Großartig, sauber gemacht, habe ich gebookmarkt. :allright:
:::: WIN 10 :: PB 5.73 :: (x64) ::::
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: WinAPI Library (Snippets) (596)

Beitrag von RSBasic »

WinAPI Library 1.2.3 wurde veröffentlicht (48 neue Beispielcodes)

Hinzugefügt:


WinAPI Library-Programm:
  • Einstellungsmöglichkeit für Zeilenumbruch

Benutzer: ButtonGadget: Dateien: Dialoge: EditorGadget: Gadgets: Internet: Konsole: Laufwerke: ListIconGadget: Menü: OpenWindow: PanelGadget: Popup-Menü: Prozesse: Sonstige: SpinGadget: StringGadget:
Online: http://www.rsbasic.de/winapi-library
Offline: Updaten ;)
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: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: WinAPI Library (Snippets) (632)

Beitrag von RSBasic »

Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: WinAPI Library (Snippets) (632)

Beitrag von STARGÅTE »

Weil ich es noch nicht gefunden habe, hier mal n kleiner Codeschnipsel von mir:

Code: Alles auswählen

Procedure.s ExpandEnvironmentString(String.s)
	Protected ExpandString.s, Length.i
	Length = ExpandEnvironmentStrings_(@String, #Null, #Null)
	ExpandString = Space(Length)
	ExpandEnvironmentStrings_(@String, @ExpandString, Length)
	ProcedureReturn ExpandString
EndProcedure

Debug ExpandEnvironmentString("%ProgramFiles%")
Debug ExpandEnvironmentString("%HomeDrive%%HomePath%")
Debug ExpandEnvironmentString("%AppData%\Meine Firma")
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten