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 

Windows Script Host
Goto page Previous  1, 2, 3, 4 ... 25, 26, 27  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Ciber SLasH



Joined: 20 Aug 2005
Posts: 209
Location: С.-Петербург

Post (Separately) Posted: Wed Nov 23, 2005 20:21    Post subject: Reply with quote

В принципе API-функции можно вызывать через RunDll32.exe, но получить возвращённое значение не получится Sad

Просто были мысли на WSH создать оконный интерфейс, т.е. создать окно "CreateWindowEx", напихать в него элементов и обрабатывать события... Тогда можно было бы фактически не имея компилятора лабать проги с оконным интерфейсом на любом компе с виндами...
Back to top
View user's profile Send private message
Ciber SLasH



Joined: 20 Aug 2005
Posts: 209
Location: С.-Петербург

Post (Separately) Posted: Wed Nov 23, 2005 21:20    Post subject: Reply with quote

Не пойму, почему не работает следующий JScript-код:
Code:
var WSH_Shell = WScript.CreateObject("WScript.Shell");
var SysPath = WSH_Shell.ExpandEnvironmentStrings("%WinDir%") + "\\system32";
WSH_Shell.Run(SysPath+'\\Rundll32.exe shell32,ShellExecuteA 0,"","","'+SysPath+'\\calc.exe","","",5');

?
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Wed Nov 23, 2005 21:44    Post subject: Reply with quote

Я, блин, болею сейчас, так что не очень-то на меня рассчитывайте Sad

По делу: минимальный код для проверки факта свершившейся установки Helpera в системе
Code:
Set TCS = CreateObject("TCSCRIPT.Helper")
TCS.About
Set TCS = Nothing

Чтобы она свершилась, пользователь во-первых должен иметь права записи в реестр. Кстати, командная строка неверно тут была упомянута, должна быть TCWSHelp.exe /REGSERVER (хотя для регистрации достаточно и простого запуска без командной строки). Тут есть важный момент: при использовании хелпера нужно быть уверенным, что он находится на том самом месте, где был при регистрации. CaptainFlint, это как раз твой случай, ругается именно на отсутствие файла EXE-сервера, а не на регисрацию. Ты его, часом не из архива запускал? Проверь.

PS CaptainFlint, ну и чего я тебе плохова сделал, а? Мыло мое вытри, плиз, из поста.
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6151
Location: Москва

Post (Separately) Posted: Wed Nov 23, 2005 22:01    Post subject: Reply with quote

Volniy
Quote:
Ты его, часом не из архива запускал? Проверь.

Нет, конечно. Сам о такой возможности подумал, уже всё это проверял (уже работал немного с подобными вещами, теперь к этому делу аккуратнее отношусь). Однако запуск TCWSHelp.exe /REGSERVER всё исправил! (Совсем слепой я стал, не вчитался, когда ридми читал, показалось, там REGISTER). Теперь всё работает, спасибо!

Quote:
PS CaptainFlint, ну и чего я тебе плохова сделал, а? Мыло мое вытри, плиз, из поста.

Ой, блин, извини, пожалуйста... Sad Не сообразил...
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Thu Nov 24, 2005 11:37    Post subject: Reply with quote

CaptainFlint
Quote:
Однако запуск TCWSHelp.exe /REGSERVER всё исправил!

Дааа... Не ожидал от тебя такого Smile У меня даже мысли не было посмотреть синтаксис приведенной тобой команды. Все-таки копи-паст великая вещь Wink

Ciber SLasH
Quote:
Не пойму, почему не работает следующий JScript-код:

Я совсем не знаю, как работать с Rundll32. Что должно происходить? Приведи просто командную строку, которая работает.
По крайней мере, работает так:
Code:
var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.Run("calc.exe");
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6151
Location: Москва

Post (Separately) Posted: Thu Nov 24, 2005 11:49    Post subject: Reply with quote

Batya
Quote:
Не ожидал от тебя такого

Я сам от себя не ожидал такого. Smile
Просто в ридми такой упор делался на то, что всё регистрится автоматом, что с явным указанием ключа я запустил так, лишь бы отделаться и проверить путь, который 100% ничего не изменит Smile До копи-паста дело просто не успело дойти.
Back to top
View user's profile Send private message
Ciber SLasH



Joined: 20 Aug 2005
Posts: 209
Location: С.-Петербург

Post (Separately) Posted: Thu Nov 24, 2005 11:58    Post subject: Reply with quote

Вот, криво, но всё-таки работающий пример вызова API-функции MessageBoxA:
Code:
var WSH_Shell = WScript.CreateObject("WScript.Shell");
WSH_Shell.Run('Rundll32.exe user32.dll,MessageBoxA "API-функция: MessageBoxA"', 0x40)
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Thu Nov 24, 2005 13:15    Post subject: Reply with quote

Ciber SLasH
Вот чего нарыл:
Исполнитель функций 32разрядных библиотек
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Thu Nov 24, 2005 17:27    Post subject: Reply with quote

Batya wrote:
Исполнитель функций 32разрядных библиотек[/url]

Это далеко не новинка, видел и покруче (поищи по словам "wsh API Toolkit OCX"), он и результат функций возвращает. У меня, кстати, есть один красивый Class c аналогичными делами, могу, если надо, впихнуть его в свой хелпер. А надо?

--

По поводу глюка автоматической регистрации. Похоже, он проявляется, если в полном пути к EXE есть пробелы (тут один на Английской странице уже заметил это дело и у меня тоже воспроизвелось оно). Учитывая тот факт, что авторегистрацию делаю не я, а сам компилятор, тут я ничем не могу помочь, хотя есть тут одна идейка...

--

PS Команды /REGSERVER и /UNREGSERVER - это не моя придурь, а стандартные команды (де)регистрации всех 32-битных EXE-серверов.
Можно, например, WinWord /REGSERVER испробовать, весьма прикольно выходит.
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6151
Location: Москва

Post (Separately) Posted: Thu Nov 24, 2005 17:39    Post subject: Reply with quote

Volniy
Quote:
По поводу глюка автоматической регистрации. Похоже, он проявляется, если в полном пути к EXE есть пробелы (тут один на Английской странице уже заметил это дело и у меня тоже воспроизвелось оно).

Первый раз, когда я экспериментировал, в пути, действительно, были пробелы. Но потом я решил на всякий случай без них, распаковал весь архив в C:\tmp\tcwshelp_b10\ - что в лоб, что по лбу.
Правда, теперь, уже после того, как сработал ключ /REGSERVER, авторегистрация начала работать (т.е. если сделать /UNREGSERVER (проверяю, действительно, скрипт перестаёт работать), а потом просто запустить TCWSHelp.exe, то регистрация нормально проходит, в том числе, когда путь с пробелами).
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Thu Nov 24, 2005 18:09    Post subject: Reply with quote

CaptainFlint wrote:
Правда, теперь, уже после того, как сработал ключ /REGSERVER, авторегистрация начала работать (т.е. если сделать /UNREGSERVER (проверяю, действительно, скрипт перестаёт работать), а потом просто запустить TCWSHelp.exe, то регистрация нормально проходит, в том числе, когда путь с пробелами).

У меня тоже так было. Непонятные какие-то дела. Я просто доку, наверное, перепишу.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Thu Nov 24, 2005 18:51    Post subject: Reply with quote

Volniy
Quote:
Это далеко не новинка, видел и покруче (поищи по словам "wsh API Toolkit OCX"), он и результат функций возвращает. У меня, кстати, есть один красивый Class c аналогичными делами, могу, если надо, впихнуть его в свой хелпер. А надо?

Наверное, надо.
Мне хочется того же, что и Ciber SLasH:
Quote:
Просто были мысли на WSH создать оконный интерфейс, т.е. создать окно "CreateWindowEx", напихать в него элементов и обрабатывать события... Тогда можно было бы фактически не имея компилятора лабать проги с оконным интерфейсом на любом компе с виндами...

Где бы еще почитать про API-функции, желательно по-русски.

И еще... Что-то по поиску, который ты предложил, все скаченные архивы zip (примеры, ocx) не открываются. Что за архивы буржуи выкладывают?
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Thu Nov 24, 2005 19:16    Post subject: Reply with quote

Batya wrote:
Мне хочется того же, что и Ciber SLasH

Окна - это уж слишком. Как он их там будет субклассить в скриптах? У меня была идея конструктора форм. Тоесть задать набор сттандартных элементов, а уже пользователь сам выбирает, что из них показывать и в каком месте формы. Но потом посмотрел, что это геморрой весьма конкретный и отказался я от этой идеи.

Quote:
Где бы еще почитать про API-функции, желательно по-русски.

Есть в сети немного, но в основном, на Английском, конечно. Привыкай. Или лучши купи хорошую книгу по API.

Quote:
Что за архивы буржуи выкладывают?

Вот выложил тот, что есть у меня.
Back to top
View user's profile Send private message
Lev



Joined: 02 Mar 2005
Posts: 392

Post (Separately) Posted: Sat Nov 26, 2005 00:09    Post subject: Reply with quote

Никак не могу разобраться с Буфером обмена. Создаю в буфере текст - "фыва", на всякий случай проверяю содержимое.
Code:
Dim TCS
Set TCS = CreateObject("TCSCRIPT.Helper")
TCS.SetTextToClip ("фыва")
msgbox TCS.GetTextFromClip

Начинаю вставлять - в одних программах - фыва
в других - ôûâà, думается тут каким-то боком примостился Юникод.
И никак не придумывается, чего надо сделать, чтобы везде было "фыва". Sad
Может сам Хелпер должен быть подкручен?
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Sat Nov 26, 2005 03:01    Post subject: Reply with quote

Lev wrote:

Начинаю вставлять - в одних программах - фыва
в других - ôûâà, думается тут каким-то боком примостился Юникод.
И никак не придумывается, чего надо сделать, чтобы везде было "фыва". Sad

Ты прав, это глюк Юникода. Там получается, что содержимое буфера обмена зависит от активной раскладки клавиатуры. Если она русская - все нормально, если нет - глюк. На данный момент я в хелпере не работаю с буфером напрямую, а только делаю обертку для готовых методов VB. Это они так работают. Аналогичная проблема и с методом SendKeystroke - если шлешь русский текст, то может быть послано такое же черте-че. Короче, проблема есть. Правда, ее можно уговорить одним стандартным рег-файликом, но это нежелательно. Я как-нибудь попробую переписать эти функции через WinAPI.
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 ... 25, 26, 27  Next
Page 3 of 27

 
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