Показать полную графическую версию : проверка наличия файла в директории
icetanker
17-10-2014, 10:06
хочу написать ярлык,который бы проверял наличие браузера Mozilla Firefox и если его находил,то запускал нужный сайт,а если не находил,то запускал бы сайт в Internet Explorer.Посоветуйте,где можно почитать и какую функцию использовать? по каким лучше параметрам проверить наличие Firefox и Internet Explorer.
Любой язык - проверка наличия файла в директории
проверял наличие браузера Mozilla Firefox »
Так что нужно проверять: наличие файла в директории или наличие установленной программы? Если нужно проверять наличие файла в директории, то какого файла и в какой директории?
icetanker
17-10-2014, 13:41
Georgio, нужно запускать сайт в Mozilla Firefox,а если его нету,то в Internet Explorer,независимо,есть ли другие браузеры и игнорируя браузер по умолчанию
На WSH:
Option Explicit
Const HKEY_LOCAL_MACHINE = &H80000002
Dim strUrl
Dim strCurrentVersion
Dim strPathToExe
Dim boolFound
strUrl = "http://www.ya.ru"
With WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\default").Get("StdRegProv")
boolFound = False
If .GetStringValue(HKEY_LOCAL_MACHINE, "SOFTWARE\Mozilla\Mozilla Firefox", "CurrentVersion", strCurrentVersion) = 0 Then
If .GetStringValue(HKEY_LOCAL_MACHINE, "SOFTWARE\Mozilla\Mozilla Firefox\" & strCurrentVersion & "\Main", "PathToExe", strPathToExe) = 0 Then
If WScript.CreateObject("Scripting.FileSystemObject").FileExists(strPathToExe) Then
boolFound = True
WScript.CreateObject("WScript.Shell").Run """" & strPathToExe & """ """ & strUrl & """", 1, 0
Else
WScript.Echo "Can't find [" & strPathToExe & "]."
End If
Else
WScript.Echo "Can't get [PathToExe] parameter from [HKLM\SOFTWARE\Mozilla\Mozilla Firefox\" & strCurrentVersion & "\Main] subkey of registry."
End If
Else
WScript.Echo "Can't get [CurrentVersion] parameter from [HKLM\SOFTWARE\Mozilla\Mozilla Firefox] subkey of registry."
End If
End With
If Not boolFound Then
With WScript.CreateObject("InternetExplorer.Application")
.Visible = True
.Navigate strUrl
End With
End If
WScript.Quit 0
icetanker
18-10-2014, 23:23
Iska, токо почему то мозилла есть на компьютере,а он пишет Can't get [PathToExe] parameter from [HKLM\SOFTWARE\Mozilla\Mozilla Firefox\" & strCurrentVersion & "\Main] subkey of registry
и не запускает в ней?почему?
почему? »
Потому что:
Can't get [PathToExe] parameter from [HKLM\SOFTWARE\Mozilla\Mozilla Firefox\" & strCurrentVersion & "\Main] subkey of registry »
Во-первых, что-то не верится, что пишет именно так. Ну, никак не может. Нажмите Ctrl-C в окне сообщения и вставьте текст сюда.
Во-вторых, даже по приведённому можно предположить, что у Вас отсутствует. Там ведь написано, чего не хватает. Также сообщите, какая у Вас ОС, её разрядность, какая версия Firefox, как и где установлена.
icetanker
19-10-2014, 10:05
Iska, windows 8 64 bit,остальное на скрине
http://forum.oszone.net/attachment.php?attachmentid=118007&stc=1&d=1413698746
El Sanchez
19-10-2014, 14:31
почему? »
icetanker, доступ через WMI к 32-разрядным разделам реестра из 64-разрядной системы немного по-другому делается:
...
Dim objCtx
strUrl = "http://www.ya.ru"
Set objCtx = CreateObject("WbemScripting.SWbemNamedValueSet")
objCtx.Add "__ProviderArchitecture", 32
With WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\default", "", "", "", "", 0, objCtx).Get("StdRegProv")
...
icetanker, вариант №2:
@Echo Off
Set URL=google.ru
Start "" /MIN cmd /c "Start "" firefox.exe -new-window %URL%||Start "" iexplore.exe %URL%"
El Sanchez, чей код возврата воспримет «||» — от первого «start», от «cmd.exe», от второго «start» или от «firefox.exe» ;)?
А теперь вопрос серьёзней: на x64 «AppPath» един для x64 и x86 приложений? Насколько я понимаю, нет. Использует ли x64-приложение данные из x86 раздела «AppPath»?
El Sanchez
19-10-2014, 18:15
чей код возврата воспримет «||» — от первого «start», от «cmd.exe», от второго «start» или от «firefox.exe» »
Iska, от второго «start». Или я что-то не знаю? Смайлик как бы напрягает :).
на x64 «AppPath» един для x64 и x86 приложений? »
Iska, видимо, един, т.к. и х86-, и х64-приложения регистрируют себя в обоих разделах «App Paths».
Использует ли x64-приложение данные из x86 раздела «AppPath»? »
Iska, да, ведь разделы «App Paths» еще и синхронизированы.
Пакетный файл:
@echo off
set "URL=http://ya.ru/"
(
for /f "delims=" %%i in ('
reg query "HKLM\SOFTWARE\Clients\StartMenuInternet" /s /f "command" /k /e^| findstr /ei "command"
') do (
for /f "delims=" %%j in ('
reg query "%%i" /f "*\firefox.exe*" /d^| findstr /irx "....*\\firefox\.exe[^\\]*"
') do (
set var=%%j
for /f "tokens=*" %%k in ('
call set /p"=%%var:*REG_SZ=%%"^<nul
') do (
start "" "%%~k" "%URL%"
)
)
)
)|| start "" "%ProgramFiles%\Internet Explorer\iexplore.exe" "%URL%"
exit /b
.
Iska, от второго «start». Или я что-то не знаю? Смайлик как бы напрягает . »
И я не знаю, поскольку не проверял ;). «Но вопрос интересный» (с).
Iska, видимо, един, т.к. и х86-, и х64-приложения регистрируют себя в обоих разделах «App Paths».
…
Iska, да, ведь разделы «App Paths» еще и синхронизированы. »
Спасибо, ясно. Вот разбогатею, автомашину куплю с магнитофоном, пошью костюм с отливом — и в Ялту! новую, с кучей оперативной памяти, и заведу себе на виртуальной машине ОС всяческие для разных игрищ :lol:. А пока, увы, только чтением документации.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.