Option Explicit
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Jo, det förstår jag... :)
IpDirectory = Start in?
ShowCmd, ska inte det vara 0?
IpOperation, vad finns mer än Open?
IpParameters, ska jag slänga in mina parametrar där som t.ex. -console..?
showcmd brukar jag ha som 1 men 0 kanske e bättre.
har inte testat själv att lägga in parametrar.
om jag behöver parametrar så brukar jag bara lägga in det där exekver filen är...
men testa lite du så kan du ju medela här vad som verkar bäst...
Sub LaunchCS(Optional ByVal sServerAddress As String, _
Optional ByVal sPassword As String, _
Optional ByVal sOtherCommand As String)
Dim sCSFolder As String, sCSExecutable As String, sCSParameters As String, hWnd As Long
sCSFolder = "C:\Sierra\Counter-Strike"
sCSExecutable = "cstrike.exe"
sCSParameters = "-console"
If Len(sPassword) Then
sCSParameters = sCSParameters & " +password " & sPassword
End If
If Len(sServerAddress) Then
If Not InStr(sServerAddress, ":") Then sServerAddress = sServerAddress & ":27015"
sCSParameters = sCSParameters & " +connect " & sServerAddress
End If
If Len(sOtherCommand) Then
sCSParameters = sCSParameters & " " & sOtherCommand
End If
'MsgBox sCSParameters
ShellExecute hWnd, "Open", sCSFolder & "\" & sCSExecutable, sCSParameters, sCSFolder, 1
End Sub
Jag använder den endast ibland för att om man inte har Call så får bara subbarna ha 1 st inparameter om man fort ska få ha parenteser.
T.ex.
Call MsgBox("Meddelande") ' Är giltig
MsgBox("Meddelande") ' Är giltig
MsgBox "Meddelande" ' Är giltig
MsgBox("Meddelande", vbInformation) ' Inte giltig
MsgBox "Meddelande", vbInformation ' Är giltig
och har man en funktion så måste man ha parenteser om man ger ett värde restultatet. T.ex. result = MsgBox("Meddelande"). Så för att inte blanda ihop när man får använda och när man inte får så använder en del programmerare Call.
Jag anser att skriva MsgBox ("Meddelande) är precis samma sak som att skriva MsgBox ("Meddelande"), (vbInformation). Ful kod...
I VB använder man inte paranteser när man inte returnerar något.
Om man vill. Om jag ska skriva en lång anropning till en sub så tar jag med call och parenteser för jag tycker det blir lättare att läsa. Ska man bara ta en kort rad med kanske en inparameter så kan man ju hoppa över det.
Om du menar att man alltid måste göra så, så får du gärna källhänvisa till den auktoritet som en gång för alla bestämt det. Microsoft själva verkar inte lägga några större moraliska aspekter på saken: Call.
Om du menar att man i praktiken alltid gör så, så har du så klart rätt. 99 gånger av 100 så väljer man att spara 7 tangenttryckningar. Den 100:ade gången väljer man kanske att prioritera läsbarheten (se exemplet ovan).
254 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e