Page 1 of 1
How to convert .bat code to .pb GetCommandLine_() ?
Posted: Fri Jan 01, 2021 5:05 am
by vmars316
Hello,
I have a .bat that I use to Hibernate win10 (one-click) .
But I would like to turn it into a *.pb , so that it can have an icon to pin to the Taskbar .
I found this code
Code: Select all
; German forum: http://www.purebasic.fr/german/archive/viewtopic.php?t=1128&highlight=
; Author: Danilo
; Date: 25. May 2003
; OS: Windows
; Demo: No
lpCmdLine = GetCommandLine_()
If lpCmdLine
A$ = PeekS(lpCmdLine)
MessageRequester("INFO","Commandline: "+A$,0)
EndIf
There is nothing in Help about "GetCommandLine" .
So I need some help to figure out how t run .bat code as commandLine_() .
Thanks for your Help...
Re: How to convert .bat code to .pb GetCommandLine_() ?
Posted: Fri Jan 01, 2021 10:17 am
by jacky
GetCommandLine_ is not a PB command, but a Windows API command
But what does that have to do with command line parameters? You have just posted the content of a bat file...
Code: Select all
RunProgram("cmd", "/c cd C:\ && shutdown /h", GetTemporaryDirectory(), #PB_Program_Hide)
Re: How to convert .bat code to .pb GetCommandLine_() ?
Posted: Fri Jan 01, 2021 6:39 pm
by vmars316
Oh that's right cmd is just a program after all .
Thanks
Re: How to convert .bat code to .pb GetCommandLine_() ?
Posted: Fri Jan 01, 2021 9:22 pm
by Marc56us
Hi,
Shutdown is an exe and is in system folder, so no need to use batch file
Re: How to convert .bat code to .pb GetCommandLine_() ?
Posted: Sat Jan 02, 2021 5:22 pm
by cas
If you do not want to run any external program (shutdown.exe) then you can do it directly with SetSystemPowerState_():
Code: Select all
EnableExplicit
Procedure _SetShutdownPrivilege()
;returns: 0=success; else error code
Protected error=0
Protected hToken
Protected p.TOKEN_PRIVILEGES
If OpenProcessToken_(GetCurrentProcess_(), #TOKEN_QUERY|#TOKEN_ADJUST_PRIVILEGES, @hToken) = 0
ProcedureReturn GetLastError_()
EndIf
p\PrivilegeCount = 1
p\Privileges[0]\Attributes = #SE_PRIVILEGE_ENABLED
If LookupPrivilegeValue_(0, "SeShutdownPrivilege", @p\Privileges[0]\Luid)=0
error=GetLastError_()
CloseHandle_(hToken)
ProcedureReturn error
EndIf
If AdjustTokenPrivileges_(hToken, 0, @p, 0, 0, 0)<>#ERROR_SUCCESS
error=GetLastError_()
EndIf
CloseHandle_(hToken)
ProcedureReturn error
EndProcedure
Procedure HibernatePC()
;returns: 0=success; else error code
_SetShutdownPrivilege()
SetSystemPowerState_(#False,0)
ProcedureReturn GetLastError_()
EndProcedure
HibernatePC()
Re: How to convert .bat code to .pb GetCommandLine_() ?
Posted: Sat Jan 02, 2021 5:56 pm
by RASHAD
Hi cas
Thanks for sharing
Code: Select all
SetSystemPowerState_(0,0) ;For hibernate
SetSystemPowerState_(1,0) ;For suspend
Re: How to convert .bat code to .pb GetCommandLine_() ?
Posted: Sat Jan 02, 2021 8:26 pm
by cas
Yeah, i should have put #False instead of #True. Thanks for a correction.