View previous topic :: View next topic |
Author |
Message |
Ciber SLasH
Joined: 20 Aug 2005 Posts: 209 Location: С.-Петербург
|
(Separately) Posted: Wed Nov 23, 2005 20:21 Post subject: |
|
|
В принципе API-функции можно вызывать через RunDll32.exe, но получить возвращённое значение не получится
Просто были мысли на WSH создать оконный интерфейс, т.е. создать окно "CreateWindowEx", напихать в него элементов и обрабатывать события... Тогда можно было бы фактически не имея компилятора лабать проги с оконным интерфейсом на любом компе с виндами... |
|
Back to top |
|
|
Ciber SLasH
Joined: 20 Aug 2005 Posts: 209 Location: С.-Петербург
|
(Separately) Posted: Wed Nov 23, 2005 21:20 Post subject: |
|
|
Не пойму, почему не работает следующий 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 |
|
|
Volniy
Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Wed Nov 23, 2005 21:44 Post subject: |
|
|
Я, блин, болею сейчас, так что не очень-то на меня рассчитывайте
По делу: минимальный код для проверки факта свершившейся установки Helpera в системе
Code: | Set TCS = CreateObject("TCSCRIPT.Helper")
TCS.About
Set TCS = Nothing
|
Чтобы она свершилась, пользователь во-первых должен иметь права записи в реестр. Кстати, командная строка неверно тут была упомянута, должна быть TCWSHelp.exe /REGSERVER (хотя для регистрации достаточно и простого запуска без командной строки). Тут есть важный момент: при использовании хелпера нужно быть уверенным, что он находится на том самом месте, где был при регистрации. CaptainFlint, это как раз твой случай, ругается именно на отсутствие файла EXE-сервера, а не на регисрацию. Ты его, часом не из архива запускал? Проверь.
PS CaptainFlint, ну и чего я тебе плохова сделал, а? Мыло мое вытри, плиз, из поста. |
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
(Separately) Posted: Wed Nov 23, 2005 22:01 Post subject: |
|
|
Volniy
Quote: | Ты его, часом не из архива запускал? Проверь. |
Нет, конечно. Сам о такой возможности подумал, уже всё это проверял (уже работал немного с подобными вещами, теперь к этому делу аккуратнее отношусь). Однако запуск TCWSHelp.exe /REGSERVER всё исправил! (Совсем слепой я стал, не вчитался, когда ридми читал, показалось, там REGISTER). Теперь всё работает, спасибо!
Quote: | PS CaptainFlint, ну и чего я тебе плохова сделал, а? Мыло мое вытри, плиз, из поста. |
Ой, блин, извини, пожалуйста... Не сообразил... |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Thu Nov 24, 2005 11:37 Post subject: |
|
|
CaptainFlint
Quote: | Однако запуск TCWSHelp.exe /REGSERVER всё исправил! |
Дааа... Не ожидал от тебя такого У меня даже мысли не было посмотреть синтаксис приведенной тобой команды. Все-таки копи-паст великая вещь
Ciber SLasH
Quote: | Не пойму, почему не работает следующий JScript-код: |
Я совсем не знаю, как работать с Rundll32. Что должно происходить? Приведи просто командную строку, которая работает.
По крайней мере, работает так:
Code: | var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.Run("calc.exe"); |
|
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
(Separately) Posted: Thu Nov 24, 2005 11:49 Post subject: |
|
|
Batya
Quote: | Не ожидал от тебя такого |
Я сам от себя не ожидал такого.
Просто в ридми такой упор делался на то, что всё регистрится автоматом, что с явным указанием ключа я запустил так, лишь бы отделаться и проверить путь, который 100% ничего не изменит До копи-паста дело просто не успело дойти. |
|
Back to top |
|
|
Ciber SLasH
Joined: 20 Aug 2005 Posts: 209 Location: С.-Петербург
|
(Separately) Posted: Thu Nov 24, 2005 11:58 Post subject: |
|
|
Вот, криво, но всё-таки работающий пример вызова API-функции MessageBoxA:
Code: | var WSH_Shell = WScript.CreateObject("WScript.Shell");
WSH_Shell.Run('Rundll32.exe user32.dll,MessageBoxA "API-функция: MessageBoxA"', 0x40) |
|
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
|
Back to top |
|
|
Volniy
Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Thu Nov 24, 2005 17:27 Post subject: |
|
|
Batya wrote: | Исполнитель функций 32разрядных библиотек[/url] |
Это далеко не новинка, видел и покруче (поищи по словам "wsh API Toolkit OCX"), он и результат функций возвращает. У меня, кстати, есть один красивый Class c аналогичными делами, могу, если надо, впихнуть его в свой хелпер. А надо?
--
По поводу глюка автоматической регистрации. Похоже, он проявляется, если в полном пути к EXE есть пробелы (тут один на Английской странице уже заметил это дело и у меня тоже воспроизвелось оно). Учитывая тот факт, что авторегистрацию делаю не я, а сам компилятор, тут я ничем не могу помочь, хотя есть тут одна идейка...
--
PS Команды /REGSERVER и /UNREGSERVER - это не моя придурь, а стандартные команды (де)регистрации всех 32-битных EXE-серверов.
Можно, например, WinWord /REGSERVER испробовать, весьма прикольно выходит. |
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
(Separately) Posted: Thu Nov 24, 2005 17:39 Post subject: |
|
|
Volniy
Quote: | По поводу глюка автоматической регистрации. Похоже, он проявляется, если в полном пути к EXE есть пробелы (тут один на Английской странице уже заметил это дело и у меня тоже воспроизвелось оно). |
Первый раз, когда я экспериментировал, в пути, действительно, были пробелы. Но потом я решил на всякий случай без них, распаковал весь архив в C:\tmp\tcwshelp_b10\ - что в лоб, что по лбу.
Правда, теперь, уже после того, как сработал ключ /REGSERVER, авторегистрация начала работать (т.е. если сделать /UNREGSERVER (проверяю, действительно, скрипт перестаёт работать), а потом просто запустить TCWSHelp.exe, то регистрация нормально проходит, в том числе, когда путь с пробелами). |
|
Back to top |
|
|
Volniy
Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Thu Nov 24, 2005 18:09 Post subject: |
|
|
CaptainFlint wrote: | Правда, теперь, уже после того, как сработал ключ /REGSERVER, авторегистрация начала работать (т.е. если сделать /UNREGSERVER (проверяю, действительно, скрипт перестаёт работать), а потом просто запустить TCWSHelp.exe, то регистрация нормально проходит, в том числе, когда путь с пробелами). |
У меня тоже так было. Непонятные какие-то дела. Я просто доку, наверное, перепишу. |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Thu Nov 24, 2005 18:51 Post subject: |
|
|
Volniy
Quote: | Это далеко не новинка, видел и покруче (поищи по словам "wsh API Toolkit OCX"), он и результат функций возвращает. У меня, кстати, есть один красивый Class c аналогичными делами, могу, если надо, впихнуть его в свой хелпер. А надо? |
Наверное, надо.
Мне хочется того же, что и Ciber SLasH:
Quote: | Просто были мысли на WSH создать оконный интерфейс, т.е. создать окно "CreateWindowEx", напихать в него элементов и обрабатывать события... Тогда можно было бы фактически не имея компилятора лабать проги с оконным интерфейсом на любом компе с виндами... |
Где бы еще почитать про API-функции, желательно по-русски.
И еще... Что-то по поиску, который ты предложил, все скаченные архивы zip (примеры, ocx) не открываются. Что за архивы буржуи выкладывают? |
|
Back to top |
|
|
Volniy
Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Thu Nov 24, 2005 19:16 Post subject: |
|
|
Batya wrote: | Мне хочется того же, что и Ciber SLasH |
Окна - это уж слишком. Как он их там будет субклассить в скриптах? У меня была идея конструктора форм. Тоесть задать набор сттандартных элементов, а уже пользователь сам выбирает, что из них показывать и в каком месте формы. Но потом посмотрел, что это геморрой весьма конкретный и отказался я от этой идеи.
Quote: | Где бы еще почитать про API-функции, желательно по-русски. |
Есть в сети немного, но в основном, на Английском, конечно. Привыкай. Или лучши купи хорошую книгу по API.
Quote: | Что за архивы буржуи выкладывают? |
Вот выложил тот, что есть у меня. |
|
Back to top |
|
|
Lev
Joined: 02 Mar 2005 Posts: 392
|
(Separately) Posted: Sat Nov 26, 2005 00:09 Post subject: |
|
|
Никак не могу разобраться с Буфером обмена. Создаю в буфере текст - "фыва", на всякий случай проверяю содержимое.
Code: | Dim TCS
Set TCS = CreateObject("TCSCRIPT.Helper")
TCS.SetTextToClip ("фыва")
msgbox TCS.GetTextFromClip |
Начинаю вставлять - в одних программах - фыва
в других - ôûâà, думается тут каким-то боком примостился Юникод.
И никак не придумывается, чего надо сделать, чтобы везде было "фыва".
Может сам Хелпер должен быть подкручен? |
|
Back to top |
|
|
Volniy
Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Sat Nov 26, 2005 03:01 Post subject: |
|
|
Lev wrote: |
Начинаю вставлять - в одних программах - фыва
в других - ôûâà, думается тут каким-то боком примостился Юникод.
И никак не придумывается, чего надо сделать, чтобы везде было "фыва". |
Ты прав, это глюк Юникода. Там получается, что содержимое буфера обмена зависит от активной раскладки клавиатуры. Если она русская - все нормально, если нет - глюк. На данный момент я в хелпере не работаю с буфером напрямую, а только делаю обертку для готовых методов VB. Это они так работают. Аналогичная проблема и с методом SendKeystroke - если шлешь русский текст, то может быть послано такое же черте-че. Короче, проблема есть. Правда, ее можно уговорить одним стандартным рег-файликом, но это нежелательно. Я как-нибудь попробую переписать эти функции через WinAPI. |
|
Back to top |
|
|
|
|
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
|