WinAPI Library (Snippets) (1163 Beispielcodes)
Re: WinAPI Library (Snippets) (548)
Struktur geändert!
- 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)
Funktioniert immer noch nicht.Rudi hat geschrieben:Struktur geändert!
Bzw. hWnd.i und hIcon.i waren richtig aber den Fehler kann ich auch noch nicht erkennen.
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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: WinAPI Library (Snippets) (548)
Vermute eher, dass man folgende Werte so verwenden sollte:ts-soft hat geschrieben:hWnd.i und hIcon.i waren richtig aber den Fehler kann ich auch noch nicht erkennen.
hWnd.q
hIcon.q
hBalloonIcon.q
also Quads.
Den Rest möglicherweise Integer.
Eventuel hilft noch eine Erhöhung der sz-Werte. Wenn nicht, muss es erst einmal so stehenbleiben: Nicht für 64 Bit!
Vielleicht findet sich ein 64 Bit-Nutzer, der den Code noch zum Laufen bringt. Ich werde mich erst wieder damit beschäftigen wenn ich zufällig auf vielversprechende Hinweise stoßen sollte.
Re: WinAPI Library (Snippets) (548)
Integer war schon richtig. .i ist unter 32 bit 4 und unter 64bit 8 byte gross.
Die Strucktur ist 12 byte zu gross. Aber den Fehler hab ich nicht gefunden.
Aber warten wir mal auf Thomas, er scheint ja da mehr zu wissen.
Die Strucktur ist 12 byte zu gross. Aber den Fehler hab ich nicht gefunden.
Aber warten wir mal auf Thomas, er scheint ja da mehr zu wissen.
-
- Beiträge: 390
- Registriert: 30.08.2004 09:05
- Computerausstattung: Desktop
Windows 10 Pro x64
CPU: AMD Ryzen 5 2600 3.40 GHz
Ram: 16GB RAM
Grafik: NVIDA Geforce 1060
PB: 5.72 X86/X64 - Wohnort: Heidelberg
Re: WinAPI Library (Snippets) (548)
Vieleicht hilft das weiter: http://stackoverflow.com/questions/7437 ... ize-member
Windows 10 x64 Pro - PB 5.61 X64 / x32 - PB 4.6 x32
Re: WinAPI Library (Snippets) (548)
Habe nach einer Möglichkeit zum Ändern der Prozesspriorität gesucht und unter dem Ordner "Prozesse" => Eintrag "Prozess-Priorität ändern" was gefunden. Allerdings funktionierte der nicht, weil statt der PID das hWnd übergeben wurde.
Habe das mal abgeändert - hier, wenn der Prozess schon läuft:
Wenn der Prozess vom eigenen Programm gestartet wird, dann mache ich das so:
Hier noch eine einfache Variante um ein Fenster mit einem ein Pixel schmalen Rahmen zu erhalten:Siehe "OpenWindow" => "Fensterrahmen entfernen"
Habe das mal abgeändert - hier, wenn der Prozess schon läuft:
Code: Alles auswählen
RunProgram("notepad")
Delay(1000)
hWnd = FindWindow_("Notepad", "Unbenannt - Editor")
GetWindowThreadProcessId_(hWnd, @pId)
hProcess = OpenProcess_(#PROCESS_SET_INFORMATION, #Null, pId)
If hProcess
SetPriorityClass_(hProcess, #BELOW_NORMAL_PRIORITY_CLASS)
CloseHandle_(hProcess)
EndIf
End
; #REALTIME_PRIORITY_CLASS ;Echtzeit
; #HIGH_PRIORITY_CLASS ;Hoch
; #ABOVE_NORMAL_PRIORITY_CLASS ;Höher als normal
; #NORMAL_PRIORITY_CLASS ;Normal
; #BELOW_NORMAL_PRIORITY_CLASS ;Niedriger als normal
; #IDLE_PRIORITY_CLASS ;Niedrig
Code: Alles auswählen
pNr = RunProgram("notepad", "", "", #PB_Program_Open)
Delay(1000)
If IsProgram(pNr) <> 0
pId = ProgramID(pNr)
hProcess = OpenProcess_(#PROCESS_SET_INFORMATION, #Null, pId)
If hProcess
SetPriorityClass_(hProcess, #HIGH_PRIORITY_CLASS)
CloseHandle_(hProcess)
EndIf
CloseProgram(pNr)
EndIf
End
; #REALTIME_PRIORITY_CLASS ;Echtzeit
; #HIGH_PRIORITY_CLASS ;Hoch
; #ABOVE_NORMAL_PRIORITY_CLASS ;Höher als normal
; #NORMAL_PRIORITY_CLASS ;Normal
; #BELOW_NORMAL_PRIORITY_CLASS ;Niedriger als normal
; #IDLE_PRIORITY_CLASS ;Niedrig
Code: Alles auswählen
OpenWindow(0,10,10,200,100,"",#WS_POPUPWINDOW)
Delay(3000)
CloseWindow(0)
End
Zuletzt geändert von Rudi am 30.10.2010 23:47, insgesamt 2-mal geändert.
Re: WinAPI Library (Snippets) (548)
Habe noch ein Geschenk für ts-soft:
Mit freundlichen Grüßen, Rudi!
Code: Alles auswählen
Structure NOTIFYICONDATA_
cbSize.l
CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
PB_Alignment1.b[4]
CompilerEndIf
hWnd.i
uID.l
uFlags.l
uCallbackMessage.l
CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
PB_Alignment2.b[4]
CompilerEndIf
hIcon.i
StructureUnion
szTip.s{64}
szTipEx.s{128}
EndStructureUnion
dwState.l
dwStateMask.l
szInfo.s{256}
StructureUnion
uTimeout.l
uVersion.l
EndStructureUnion
szInfoTitle.s{64}
dwInfoFlags.l
guidItem.GUID
hBalloonIcon.i
EndStructure
Procedure SysTrayIconBalloon(uId, hWindow, Title$, Message$, timeOut, flags)
Protected nId.NOTIFYICONDATA_
If OSVersion() >= #PB_OS_Windows_Vista
nId\cbSize = SizeOf(NOTIFYICONDATA_)
ElseIf OSVersion() >= #PB_OS_Windows_XP
nId\cbSize = #NOTIFYICONDATA_V3_SIZE
ElseIf OSVersion() >= #PB_OS_Windows_2000
nId\cbSize = #NOTIFYICONDATA_V2_SIZE
Else
nId\cbSize = #NOTIFYICONDATA_V1_SIZE
EndIf
If nId\cbSize
nId\uId = uId
nId\hwnd = hWindow
nId\szInfoTitle = Title$
nId\szInfo = Message$
nId\uTimeout = timeOut
nId\dwInfoFlags = flags
nId\uFlags = #NIF_INFO
nId\uVersion = #NOTIFYICON_VERSION+1
Shell_NotifyIcon_(#NIM_SETVERSION, @nId)
ProcedureReturn Shell_NotifyIcon_(#NIM_MODIFY, @nId)
EndIf
ProcedureReturn #False
EndProcedure
If OpenWindow(0,#PB_Ignore,#PB_Ignore,200,200,"BalloonTip",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
AddSysTrayIcon(0, WindowID(0), ExtractIcon_(0,"explorer.exe",3))
SysTrayIconBalloon(0, WindowID(0),"BalloonTip 1!","BalloonTip wechselt in drei Sekunden!", 100, #NIIF_INFO)
Delay(3000)
SysTrayIconBalloon(0, WindowID(0),"BalloonTip 2!","BalloonTip verschwindet gleich!", 100, #NIIF_WARNING)
Delay(3000)
SysTrayIconBalloon(0, WindowID(0), "", "", 100, #NIIF_NONE)
Delay(1000)
EndIf
End
- 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)
Nach soviel Geschenk von mir auch noch einen
File.s mit Pfad!
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
Gruß
Thomas

Code: Alles auswählen
Procedure.s FindAssociatedProgram(File.s)
Protected Result.s = Space(#MAX_PATH)
Protected Error
Error = FindExecutable_(@File, 0, @Result)
If Error <= 32
Select Error
Case #SE_ERR_FNF
Debug "The specified file was not found"
Case #SE_ERR_PNF
Debug "The specified path is invalid"
Case #SE_ERR_ACCESSDENIED
Debug "The specified file cannot be accessed"
Case #SE_ERR_OOM
Debug "The system is out of memory or resources"
Case #SE_ERR_NOASSOC
Debug "There is no association for the specified file type with an executable file"
Default
Debug "Unknown error"
EndSelect
ProcedureReturn ""
EndIf
ProcedureReturn Result
EndProcedure
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
Gruß
Thomas
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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: WinAPI Library (Snippets) (548)
Hier noch die URL zur NOTIFYICONDATA - Struktur:
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
ComputerName setzen:
Datei ausdrucken, mit Fehlerauswertung:
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
ComputerName setzen:
Code: Alles auswählen
SetComputerName_("Fritz")
;Änderungen werden beim nächsten Neustart des Computers übernommen!
;http://msdn.microsoft.com/en-us/library/ms724930%28VS.85%29.aspx
Code: Alles auswählen
EnableExplicit
Global File$
File$ = OpenFileRequester("", "", "Text (*.txt)|*.txt|Alle Dateien (*.*)|*.*", 0)
If File$
Select ShellExecute_(0, "print", File$, #Null, #Null, #SW_SHOWNORMAL)
Case 0
MessageRequester("Fehler", "The operating system is out of memory or resources.", #MB_ICONSTOP|#MB_TOPMOST)
Case #ERROR_FILE_NOT_FOUND
MessageRequester("Fehler", "The specified file was not found.", #MB_ICONSTOP|#MB_TOPMOST)
Case #ERROR_PATH_NOT_FOUND
MessageRequester("Fehler", "The specified path was not found.", #MB_ICONSTOP|#MB_TOPMOST)
Case #ERROR_BAD_FORMAT
MessageRequester("Fehler", "The .EXE file is invalid (non-Win32 .EXE or error in .EXE image).", #MB_ICONSTOP|#MB_TOPMOST)
Case #SE_ERR_ACCESSDENIED
MessageRequester("Fehler", "The operating system denied access to the specified file.", #MB_ICONSTOP|#MB_TOPMOST)
Case #SE_ERR_ASSOCINCOMPLETE
MessageRequester("Fehler", "The filename association is incomplete or invalid.", #MB_ICONSTOP|#MB_TOPMOST)
Case #SE_ERR_DDEBUSY
MessageRequester("Fehler", "The DDE transaction could not be completed because other DDE transactions were being processed.", #MB_ICONSTOP|#MB_TOPMOST)
Case #SE_ERR_DDEFAIL
MessageRequester("Fehler", "The DDE transaction failed.", #MB_ICONSTOP|#MB_TOPMOST)
Case #SE_ERR_DDETIMEOUT
MessageRequester("Fehler", "The DDE transaction could not be completed because the request timed out.", #MB_ICONSTOP|#MB_TOPMOST)
Case #SE_ERR_DLLNOTFOUND
MessageRequester("Fehler", "The specified dynamic-link library was not found.", #MB_ICONSTOP|#MB_TOPMOST)
Case #SE_ERR_FNF
MessageRequester("Fehler", "The specified file was not found.", #MB_ICONSTOP|#MB_TOPMOST)
Case #SE_ERR_NOASSOC
MessageRequester("Fehler", "There is no application associated with the given filename extension.", #MB_ICONSTOP|#MB_TOPMOST)
Case #SE_ERR_OOM
MessageRequester("Fehler", "There was not enough memory to complete the operation.", #MB_ICONSTOP|#MB_TOPMOST)
Case #SE_ERR_PNF
MessageRequester("Fehler", "The specified path was not found.", #MB_ICONSTOP|#MB_TOPMOST)
Case #SE_ERR_SHARE
MessageRequester("Fehler", "A sharing violation occurred.", #MB_ICONSTOP|#MB_TOPMOST)
EndSelect
EndIf
;http://msdn.microsoft.com/en-us/library/bb762153%28VS.85%29.aspx
;http://support.microsoft.com/kb/238245