Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Определить разрядность запущенного TC
Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8, 9  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
gora



Joined: 30 Dec 2004
Posts: 442
Location: Иваново

Post (Separately) Posted: Mon Jan 23, 2012 18:13    Post subject: Reply with quote

Flasher
Скрипт не учитывает, как оказалось, разрядность системы. На х64 ОС он работает, а на х86 он выдает битность ТС - х64, т.к., суффикса "32" там у процесса нет.
_________________
Win7 SP1 Ultimate x64, TC8.52a x64
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Jan 23, 2012 18:16    Post subject: Reply with quote

gora wrote:
на х86 он выдает битность ТС - х64, т.к., суффикса "32" там у процесса нет.
У меня Win7x86, всё там есть.
Back to top
View user's profile Send private message
gora



Joined: 30 Dec 2004
Posts: 442
Location: Иваново

Post (Separately) Posted: Mon Jan 23, 2012 18:23    Post subject: Reply with quote

Flasher
Проверял на ХРх86, выдает битность ТС - х64
_________________
Win7 SP1 Ultimate x64, TC8.52a x64
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Jan 23, 2012 18:29    Post subject: Reply with quote

А, значит, с XP проблема. В Win7 как?
Что в окне на XP показывает?:
Code:
Set TCPath = CreateObject("Shell.Application").NameSpace(CreateObject("WScript.Shell").Environment("Process")("COMMANDER_PATH") & "\")
MsgBox TCPath.GetDetailsOf(TCPath.ParseName("Totalcmd.exe"), 34)
Back to top
View user's profile Send private message
gora



Joined: 30 Dec 2004
Posts: 442
Location: Иваново

Post (Separately) Posted: Mon Jan 23, 2012 18:59    Post subject: Reply with quote

Flasher
С данной строкой показывает:
XPx86 - пустое окно (ни чего не написано)
7x86 - Total Commander 32 bit
7x64 - Описание файла
_________________
Win7 SP1 Ultimate x64, TC8.52a x64
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Jan 23, 2012 19:06    Post subject: Reply with quote

gora
Так, понятно. Значит, что я могу тут предложить:
1) Проверять только по присутсвию 64 на конце базового имени exe-ника.
2) Проверять версию OS, если XP, то - по имени, если нет, то - как обычно.
Back to top
View user's profile Send private message
Samwatas



Joined: 12 Sep 2009
Posts: 95

Post (Separately) Posted: Mon Jan 23, 2012 22:37    Post subject: Reply with quote

На AutoIt это сделать гораздо проще. Или нужно именно vbs?
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Jan 23, 2012 22:57    Post subject: Reply with quote

Samwatas
Думаю, что автору как раз на AutoIt лучше.
Back to top
View user's profile Send private message
Samwatas



Joined: 12 Sep 2009
Posts: 95

Post (Separately) Posted: Mon Jan 23, 2012 23:19    Post subject: Reply with quote

Встроенные макросы:
@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/115352-process-thread-dll-functions-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).
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Jan 23, 2012 23:36    Post subject: Reply with quote

Samwatas
А определить путь exe-шника?
Back to top
View user's profile Send private message
Samwatas



Joined: 12 Sep 2009
Posts: 95

Post (Separately) Posted: Tue Jan 24, 2012 00:01    Post subject: Reply with quote

%COMMANDER_PATH%\%COMMANDER_EXE% (начиная с 8 версии)
Для предыдущих нужно будет чуть усложнить (при этом обеспечив гарантированное определение).
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue Jan 24, 2012 00:03    Post subject: Reply with quote

Samwatas
А тему почитать? Начиная не просто с 8...
Гарантированное определение нужно для pb1-9.
Back to top
View user's profile Send private message
Samwatas



Joined: 12 Sep 2009
Posts: 95

Post (Separately) Posted: Tue Jan 24, 2012 00:18    Post subject: Reply with quote

Это все решаемо (и без %COMMANDER_EXE%)
Пока что неизвестно, устроит ли АвтоИт автора (и будет ли он писать сам, или ему потребуется помощь Автоитчиков), так что не стоит пока гнать лошадей.
Лично я бы на месте автора, если бы решил использовать Автоит, переписал бы всю логику на нем, избавившись от остальных батников и скриптов (так, что остался бы один откомпилированный скрипт, выполняющий всю необходимую работу).
Так что я предлагаю сперва дождаться ответа автора, а потом уже думать как это реализовать.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue Jan 24, 2012 00:55    Post subject: Reply with quote

Samwatas wrote:
Пока что неизвестно, устроит ли АвтоИт автора (и будет ли он писать сам, или ему потребуется помощь Автоитчиков), так что не стоит пока гнать лошадей.
Каких лошадей, если человек постучался с конкретным вопросом? Там как раз AutoIt и применяется.

Samwatas wrote:
Лично я бы на месте автора, если бы решил использовать Автоит, переписал бы всю логику на нем, избавившись от остальных батников и скриптов
Наверняка gora мыслил аналочно, но, видимо, не всё там срослось.
Back to top
View user's profile Send private message
Samwatas



Joined: 12 Sep 2009
Posts: 95

Post (Separately) Posted: Tue Jan 24, 2012 01:28    Post subject: Reply with quote

Quote:
Там как раз AutoIt и применяется.

Где? Я не ставил себе эту кнопку поскольку не нуждаюсь в таком функционале.

На конкретный вопрос (как определить битность тотала) я дал конкретный ответ (На Автоите можно использовать пользовательские ф-ции _ProcessIs32Bit() и _ProcessIs64Bit() - вполне возможно автор просто не знал о такой пользовательской библиотеке).
Если необходима конкретная реализация, то я могу завтра набросать что нибудь на эту тему.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8, 9  Next
Page 5 of 9

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group