Большой Воронежский Форум
» Программирование>написать BATничек
jeck 00:01 24.03.2006
снающие люди подсобите наваять BAT - фаил. Нужно, что бы он помещал в буфер обмена строку данных, а потом запускал программу. [Ответ]
Luke 07:50 24.03.2006
нет ничего проще...

rem ====my.bat=====
CopyStrToClipBoard "Эта строка данных помещается в буфер обмена"
execute myProg.exe
rem ==end my.bat=== [Ответ]
jeck 20:42 24.03.2006
не работает!
убрал execute, прога myProg.exe запустилась,
а в черном окне пишет- "CopyStrToClipBoard" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. cсоответствено в буфере пусто
как быть?
ps если че, XP [Ответ]
The_God 13:55 25.03.2006
тулзу CopyStrToClipBoard
ты сам должен написать чтоб она параметры свои в буфер обмена записывала [Ответ]
Yandex 16:01 25.03.2006
Что то в таком духе (у мя 98 - SendKeys - не фуpычит, пpовеpить не могу).
Это не bat - это лучше
---------------- 1.vbs ----------------
set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "notepad", 5

' Тут надо заголовок заменить скоpее всего
objShell.AppActivate "Блокнот"
WScript.Sleep 100
objShell.SendKeys "твой текст"
WScript.Sleep 2500
' Выделяем все
objShell.SendKeys "^a"
WScript.Sleep 2500
' Коиpуем в буффеp
objShell.SendKeys "^c"
WScript.Sleep 2500

' Закpываем блокнот
' Кажется он там сохpанить захочет - откажем
objShell.SendKeys ({ESC})
objShell.SendKeys ({RIGHT})
objShell.SendKeys ({ENTER})

' И наконец стаPт твоего exe
objShell.Run "my.exe", 5
[Ответ]
jeck 19:53 25.03.2006

Сообщение от Yandex:
Это не bat - это лучше

а что мне с этим делать? [Ответ]
you_are 20:55 25.03.2006
jeck,
Догадываюсь, для чего это тебе нужно [Ответ]
jeck 23:18 25.03.2006
you_are, ну проблему надо ведь хоть как-то решить [Ответ]
Yandex 23:40 25.03.2006
Написано же - поместить в фаил с именем например 1.vbs и запускать вместо bat-ника.
(предварительно отредактировав малек - голова я думаю у тя имеется)

по смыслу - делается следуещее (почти построчно)
Запускается блокнот.
Спим (ждем пока запустится)
Активируется
Спим (ждем пока активиуется)
посылаем нажатие клавиш
Спим (пока нажатия обработаются)
посылаем нажатие ctrl-A (~ выделить все)
Спим (понятно почему)
послваем нажатие ctrl-V (~ закопировать в буффер стоку)
дрыхнем
--теперь осталось закрыть блокнот
посылаем нажатие ESC (надеюсь у тя альтенативный блокнот, выход из котоого по ESC сработает - bred 2 или akelpad)
--Однако предложит сохранить фаил - надо отказаться - для этого
посылаем нажатие стрелки вправо и ентер.

последняя строка запускает твою прогу (5 означает, что она будет видна и активна)

Если вопросы еще - попробуй отловить в ваське.
Вообще это Windows Script Нost. [Ответ]
jeck 00:51 26.03.2006
Yandex, после замены () на "" и установки akelpad все заработало, но есть вопросы
set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "D:\Text\akelpad\akelpad.exe" , 5



objShell.AppActivate "Блокнот" - зачем это надо, и что имелось в виду под "Блокнот"
WScript.Sleep 100
objShell.SendKeys "бла-бла-бла"
WScript.Sleep 250
' Выделяем все
objShell.SendKeys "^a"
WScript.Sleep 250
' Коиpуем в буффеp
objShell.SendKeys "^c"
WScript.Sleep 250

' Закpываем блокнот
' Кажется он там сохpанить захочет - откажем
objShell.SendKeys "{ESC}"
objShell.SendKeys "{RIGHT}"
objShell.SendKeys "{ENTER}"

' И наконец стаPт твоего exe
objShell.Run "прога.exe", 5

Сообщение от Yandex:
(5 означает, что она будет видна и активна)

а есть ключ, что бы akelpad был не виден?
зы аськи нету [Ответ]
netwind 09:41 26.03.2006
мрак. судя по гуглу в resource kit от 98 и nt4(а так же в win 2003 server) можно найти прогу clip.exe для работы с буфером обмена. [Ответ]
netwind 09:47 26.03.2006
http://www.petri.co.il/software/clip.zip.
суешь ее куданить в с:\tls (СЛАВАРЕТУ или кто там придумал этот каталог писать на имаджи)

и набиваешь примерно такой файл :

echo "это строка помещается в буфер обмена" | c:\tls\clip
"C:\Program files\блаблабла\бла.exe" [Ответ]
Yandex 20:41 27.03.2006
C доки
0 - Hides the window and activates another window.

1 - Activates and displays a window. If the window is minimized or maximized, the system restores it to its original size and position. An application should specify this flag when displaying the window for the first time.

2 - Activates the window and displays it as a minimized window.

3 - Activates the window and displays it as a maximized window.

4 - Displays a window in its most recent size and position. The active window remains active.

5 - Activates the window and displays it in its current size and position.

6 - Minimizes the specified window and activates the next top-level window in the Z order.

7 - Displays the window as a minimized window. The active window remains active.

8 - Displays the window in its current state. The active window remains active.

9 - Activates and displays the window. If the window is minimized or maximized, the system restores it to its original size and position. An application should specify this flag when restoring a minimized window.

10 - Sets the show-state based on the state of the program that started the application.

То есть те 0 нужен, а не 5.

Вообще конечно как netwind лучше сделать - а не фигней страдать, как это я сделал )) (вообще таких прог дофига, да и настрочить ее за 10 мин мона [только для тескта]). [Ответ]
Alexey 23:11 27.03.2006
netwind, tls рулит до сих пор юзаю [Ответ]
jeck 23:20 27.03.2006
Yandex, netwind, спосибо за помощь, работают оба варианта [Ответ]
Yandex 20:18 28.03.2006
Гы-гы
objShell.Run "notepad", 5
не будет работать - т.к. SendKeys посылает нажатия тока в активную прогу (а раз она не видна, то и не активна) [Ответ]
Вверх