Страница 5 из 9
Добавлено: Пн янв 23, 2012 18:13
gora
Flasher
Скрипт не учитывает, как оказалось, разрядность системы. На х64 ОС он работает, а на х86 он выдает битность ТС - х64, т.к., суффикса "32" там у процесса нет.
Добавлено: Пн янв 23, 2012 18:16
Flasher
gora писал(а):на х86 он выдает битность ТС - х64, т.к., суффикса "32" там у процесса нет.
У меня Win7x86, всё там есть.
Добавлено: Пн янв 23, 2012 18:23
gora
Flasher
Проверял на ХРх86, выдает битность ТС - х64
Добавлено: Пн янв 23, 2012 18:29
Flasher
А, значит, с XP проблема. В Win7 как?
Что в окне на XP показывает?:
Код: Выделить всё
Set TCPath = CreateObject("Shell.Application").NameSpace(CreateObject("WScript.Shell").Environment("Process")("COMMANDER_PATH") & "\")
MsgBox TCPath.GetDetailsOf(TCPath.ParseName("Totalcmd.exe"), 34)
Добавлено: Пн янв 23, 2012 18:59
gora
Flasher
С данной строкой показывает:
XPx86 - пустое окно (ни чего не написано)
7x86 - Total Commander 32 bit
7x64 - Описание файла
Добавлено: Пн янв 23, 2012 19:06
Flasher
gora
Так, понятно. Значит, что я могу тут предложить:
1) Проверять только по присутсвию 64 на конце базового имени exe-ника.
2) Проверять версию OS, если XP, то - по имени, если нет, то - как обычно.
Добавлено: Пн янв 23, 2012 22:37
Samwatas
На AutoIt это сделать гораздо проще. Или нужно именно vbs?
Добавлено: Пн янв 23, 2012 22:57
Flasher
Samwatas
Думаю, что автору как раз на AutoIt лучше.
Добавлено: Пн янв 23, 2012 23:19
Samwatas
Встроенные макросы:
@CPUArch - Returns "X86" when the CPU is a 32-bit CPU and "X64" when the CPU is 64-bit.
@OSArch - Returns one of the following: "X86", "IA64", "X64" - this is the architecture type of the currently running operating system.
@OSVersion - Returns one of the following: "WIN_2008R2", "WIN_7", "WIN_8", "WIN_2008", "WIN_VISTA", "WIN_2003", "WIN_XP", "WIN_XPe", "WIN_2000".
Однако автору нужно немного другое -
http://www.autoitscript.com/forum/topic ... ions-udfs/ - набор UDF функций, среди которых такие:
; _ProcessIs32Bit() ; Returns True if Process is 32-bit (makes _ProcessIsWow64() use more simpler)
; _ProcessIs64Bit() ; Returns True if Process is 64-bit (makes _ProcessIsWow64() use more simpler)
Дальнейшее дело техники - смотрим путь к запущенному процессу тотала в переменных окружения и определяем его битность вышеуказанными функциями. Можно откомпилить скрипт как консольное приложение, возвращающее нужное значение.
Единственное неудобство откомпиленных скриптов - это размер (будет не меньше чем ~300 KB).
Добавлено: Пн янв 23, 2012 23:36
Flasher
Samwatas
А определить путь exe-шника?
Добавлено: Вт янв 24, 2012 00:01
Samwatas
%COMMANDER_PATH%\%COMMANDER_EXE% (начиная с 8 версии)
Для предыдущих нужно будет чуть усложнить (при этом обеспечив гарантированное определение).
Добавлено: Вт янв 24, 2012 00:03
Flasher
Samwatas
А тему почитать? Начиная не просто с 8...
Гарантированное определение нужно для pb1-9.
Добавлено: Вт янв 24, 2012 00:18
Samwatas
Это все решаемо (и без %COMMANDER_EXE%)
Пока что неизвестно, устроит ли АвтоИт автора (и будет ли он писать сам, или ему потребуется помощь Автоитчиков), так что не стоит пока гнать лошадей.
Лично я бы на месте автора, если бы решил использовать Автоит, переписал бы всю логику на нем, избавившись от остальных батников и скриптов (так, что остался бы один откомпилированный скрипт, выполняющий всю необходимую работу).
Так что я предлагаю сперва дождаться ответа автора, а потом уже думать как это реализовать.
Добавлено: Вт янв 24, 2012 00:55
Flasher
Samwatas писал(а):Пока что неизвестно, устроит ли АвтоИт автора (и будет ли он писать сам, или ему потребуется помощь Автоитчиков), так что не стоит пока гнать лошадей.
Каких лошадей, если человек постучался с конкретным вопросом? Там как раз AutoIt и применяется.
Samwatas писал(а):Лично я бы на месте автора, если бы решил использовать Автоит, переписал бы всю логику на нем, избавившись от остальных батников и скриптов
Наверняка
gora мыслил аналочно, но, видимо, не всё там срослось.
Добавлено: Вт янв 24, 2012 01:28
Samwatas
Там как раз AutoIt и применяется.
Где? Я не ставил себе эту кнопку поскольку не нуждаюсь в таком функционале.
На конкретный вопрос (как определить битность тотала) я дал конкретный ответ (На Автоите можно использовать пользовательские ф-ции _ProcessIs32Bit() и _ProcessIs64Bit() - вполне возможно автор просто не знал о такой пользовательской библиотеке).
Если необходима конкретная реализация, то я могу завтра набросать что нибудь на эту тему.