как выполнить msconfig
напишите код
Shell "C:\WINDOWS\PCHealth\HelpCtr\Binaries\msconfig.exe"
хм.. странно.. и правда не работает...
А почему?
Dim WinPath as String
WinPath = EnVar$("windir")
If WinPath = "" then
WinPath = IIf(Dir$("C:\Windows", vbDirectory) = "", "C:\Windows", "")
End If
If WinPath = "" then
WinPath = IIf(Dir$("C:\Winnt", vbDirectory) = "", "C:\Windows", "")
End If
If WinPath <> "" then
Shell WinPath & "\msconfig.exe"
End If
Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
...
Dim ret As Long, L As Long, P As String
L = 255
P = String$(L, 0)
ret = GetWindowsDirectory(P, L)
If ret > L Then
L = ret
P = String$(L, 0)
ret = GetWindowsDirectory(P, L)
End If
If ret = 0 Then
MsgBox "ERROR!"
Else
P = Left$(P, ret)
End If
alibek писал(а):Что за глупость?
API GetWindowsDirectory
FAQ писал(а):В БЕЙСИКе есть одна ОЧЕНЬ полезная, но многими забытая функция Environ! Она возвращает имена и содержание всех переменных среды операционной системы!!! Так, например, чтобы получить директорию Windows, совсем не надо прибегать к API-функции GetWindowsDirectory!!!!!! А получить её можно так:
ABC = Environ ("windir")
И ВСЁ!
Но и это ещё не всё! Также можно получить следующие переменные:
ABC = Environ ("TMP") 'директория временных файлов TEMP
ABC = Environ ("BLASTER") 'координаты звуковой карты
ABC = Environ ("PATH") 'пути, объявленные в autoexec.bat
НО И ЭТО ВСЁ ЕЩЁ НЕ ВСЁ!!!!
Чтобы получить имя и значение переменной, в скобках вместо строки надо поставить номер переменной (или индекс?).
Вставьте следуюшую процедуру в окно Code, запустите проект, кликните на форме увидите список всех переменных и их значений!
Private Sub Form_Click()
'берём переменную и присваиваем ей единицу
m = 1
'запускаем цикл, который увеличивает переменную m каждый
'раз на единицу и подсовывает её функции Environ
Do
'присваеваем перменной EnvString возвращаемую переменную,
'соответсвующую номеру m
EnvString = Environ(m)
'печатаем переменную, соответствующую номеру m
Print Environ(m)
'переменную m увеличиваем на один
m = m + 1
'если переменная EnvString всё ещё не пустая - крутим дальше...
Loop Until EnvString = ""
End Sub
И теперь все, кто недолюбливает API-функции (по-моему их вообще мало, кто долюбливает ) могут пользоваться только этой строчкой!
Dim WinPath as String
WinPath = EnVirion("windir")
If WinPath = "" then
WinPath = IIf(Dir$("C:\Windows", vbDirectory) = "", "C:\Windows", "")
End If
If WinPath = "" then
WinPath = IIf(Dir$("C:\Winnt", vbDirectory) = "", "C:\Windows", "")
End If
If WinPath <> "" then
Shell WinPath & "\msconfig.exe"
End If
alibek писал(а):И наконец, что даст твой код на моей машине?
alibek писал(а):Я люблю ставить Windows XP в папку WINXP (и необязательно на диске C:)
alibek писал(а):И что в общем случае, там совсем не обязательно будет переменная windir?
alibek писал(а):И наконец, что даст твой код на моей машине? Я люблю ставить Windows XP в папку WINXP (и необязательно на диске C:)
kirrun писал(а):Как я понимаю, переменная windir содержит ИМЕННО ТОТ путь, куда У ТЕБЯ установлен мастдай.
alibek писал(а):kirrun писал(а):Как я понимаю, переменная windir содержит ИМЕННО ТОТ путь, куда У ТЕБЯ установлен мастдай.
Не обязательно. См. выше.
Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 34