Запуск MSpaint со вставкой в него содерж. буфф. обмена

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Creat0R
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 19
Зарегистрирован: 19.07.2006 (Ср) 2:51
Откуда: Univers://Earth.man

Запуск MSpaint со вставкой в него содерж. буфф. обмена

Сообщение Creat0R » 19.07.2006 (Ср) 21:39

Приветствую всех заглянувших сюда!

Помогите сделать такую весч:

Нужно скриптом VBS (VBScript), запустить редакор рисунков MSpaint, затем поместить в него содержимое буффера обмена (рисунок)...

Вот как пробовал:

Код: Выделить всё
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run ("""%systemroot%\system32\mspaint.exe """ )

DIM Wsh
Set Wsh = WScript.CreateObject("WScript.Shell")
Wsh.SendKeys "^{v}"
'quit
Set Wsh = nothing
WScript.Quit


Но таким образом, запускается редактор MSpaint, но рисунок в него не вставляется, и даже больше скажу - скопированный заранее рисунок в буффер обмена, куда-то исчезает, и вставить его затем не возможно.

Что я не так сделал? как поправить? или нужно подругому делать?

Заранее благдарю если сможет кто-то помочь!
CreatoR это не ник, CreatoR это стиль жизни!
Мой девиз - Умри, но будь!!!

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 20.07.2006 (Чт) 3:48

Creat0R, попробуй дождаться полной загрузки программы. Проконтролируй активно ли окно.
Алкоголь и сканеры-ваши враги! Не верите-смотрите аватару :-)

Creat0R
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 19
Зарегистрирован: 19.07.2006 (Ср) 2:51
Откуда: Univers://Earth.man

Сообщение Creat0R » 20.07.2006 (Чт) 14:02

Matew писал(а):Creat0R, попробуй дождаться полной загрузки программы. Проконтролируй активно ли окно.


Вот тут-то и проблема, окно не всегда активно, а даже если и активно, то как мне кажется, функция которая имитирует нажатие клавиш ctrl v, срабатывает раньше чем запускается mspaint. Или вообще не срабатывает...

Думаю если поставить паузу перед выполнением имитации клавиш в сикунд, 5, то проблема решится - но увы :( , я не знаю как это делается в VBScript.
CreatoR это не ник, CreatoR это стиль жизни!
Мой девиз - Умри, но будь!!!

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 20.07.2006 (Чт) 14:09

а не проще скинуть картинку в файл и сделать так: paint.exe c:\pic.bmp
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Creat0R
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 19
Зарегистрирован: 19.07.2006 (Ср) 2:51
Откуда: Univers://Earth.man

Сообщение Creat0R » 20.07.2006 (Чт) 14:40

Sebas
а не проще скинуть картинку в файл и сделать так: paint.exe c:\pic.bmp

Может так и проще, просто я не знаю как записать содержимое буффера обмена в файл, и также не знаю как запустить файл в mspaint (paint.exe c:\pic.bmp - не работает).
CreatoR это не ник, CreatoR это стиль жизни!
Мой девиз - Умри, но будь!!!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 20.07.2006 (Чт) 14:53

Потому что не paint.exe, а mspaint.exe
Изображение

Creat0R
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 19
Зарегистрирован: 19.07.2006 (Ср) 2:51
Откуда: Univers://Earth.man

Сообщение Creat0R » 20.07.2006 (Чт) 15:26

tyomitch
Я знаю что нужно MSpaint.exe (то что у меня в скобках, было взято из цытаты Sebas'а), но я и так не знаю как запустить в нём файл, и кроме того, как брать из буффера обмена картинку, и сувать её в файл я тоже не знаю! плиз помаги(те) справиться с таким пустяковым заданием.
Сенкс!
CreatoR это не ник, CreatoR это стиль жизни!
Мой девиз - Умри, но будь!!!

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 20.07.2006 (Чт) 15:37

Working with Multiple Formats on the Clipboard

You can actually place several pieces of data on the Clipboard at the same time, as long as each piece is in a different format. This is useful because you don’t know what application will be pasting the data, so supplying the data in several different formats enhances the chance that you will provide it in a format that the other application can use. The other Clipboard methods — GetData, SetData, and GetFormat — allow you to deal with data formats other than text by supplying a number that specifies the format. These formats are described in the following table, along with the corresponding number.

Constant Description
vbCFLink Dynamic data exchange link.
vbCFText Text. Examples earlier in this chapter all use this format.
vbCFBitmap Bitmap.
vbCFMetafile Metafile.
vbCFDIB Device-independent bitmap.
vbCFPalette Color palette.


You can use the last four formats when cutting and pasting data from picture box controls. The following code provides generalized Cut, Copy, and Paste commands that work with any of the standard controls.

Код: Выделить всё
Private Sub mnuCopy_Click ()
   Clipboard.Clear
   If TypeOf Screen.ActiveControl Is TextBox Then
      Clipboard.SetText Screen.ActiveControl.SelText
   ElseIf TypeOf Screen.ActiveControl Is ComboBox Then
      Clipboard.SetText Screen.ActiveControl.Text
   ElseIf TypeOf Screen.ActiveControl Is PictureBox _
         Then
      Clipboard.SetData Screen.ActiveControl.Picture
   ElseIf TypeOf Screen.ActiveControl Is ListBox Then
      Clipboard.SetText Screen.ActiveControl.Text
   Else
      ' No action makes sense for the other controls.
   End If
End Sub

Private Sub mnuCut_Click ()
   ' First do the same as a copy.
   mnuCopy_Click
   ' Now clear contents of active control.
   If TypeOf Screen.ActiveControl Is TextBox Then
      Screen.ActiveControl.SelText = ""
   ElseIf TypeOf Screen.ActiveControl Is ComboBox Then
      Screen.ActiveControl.Text = ""
   ElseIf TypeOf Screen.ActiveControl Is PictureBox _
         Then
      Screen.ActiveControl.Picture = LoadPicture()
   ElseIf TypeOf Screen.ActiveControl Is ListBox Then
      Screen.ActiveControl.RemoveItem Screen.ActiveControl.ListIndex
   Else
      ' No action makes sense for the other controls.
   End If
End Sub

Private Sub mnuPaste_Click ()
   If TypeOf Screen.ActiveControl Is TextBox Then
      Screen.ActiveControl.SelText = Clipboard.GetText()
   ElseIf TypeOf Screen.ActiveControl Is ComboBox Then
      Screen.ActiveControl.Text = Clipboard.GetText()
   ElseIf TypeOf Screen.ActiveControl Is PictureBox _
         Then
      Screen.ActiveControl.Picture = _
         Clipboard.GetData()
   ElseIf TypeOf Screen.ActiveControl Is ListBox Then
      Screen.ActiveControl.AddItem Clipboard.GetText()
   Else
      ' No action makes sense for the other controls.
   End If
End Sub



--------------------------------------------------------------------------------
Send feedback to MSDN.Look here for MSDN Online resources

Creat0R
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 19
Зарегистрирован: 19.07.2006 (Ср) 2:51
Откуда: Univers://Earth.man

Сообщение Creat0R » 20.07.2006 (Чт) 16:06

Konst_One
Это в Vbs не работает, пишет синтаксическая ошибка!
CreatoR это не ник, CreatoR это стиль жизни!
Мой девиз - Умри, но будь!!!

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 20.07.2006 (Чт) 16:15

напиши программу запускай ее хоть через bat :)

Creat0R
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 19
Зарегистрирован: 19.07.2006 (Ср) 2:51
Откуда: Univers://Earth.man

Сообщение Creat0R » 20.07.2006 (Чт) 17:16

Konst_One
Мне нужно именно на vbs! (без всяких батников)
CreatoR это не ник, CreatoR это стиль жизни!
Мой девиз - Умри, но будь!!!

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 21.07.2006 (Пт) 5:19

Creat0R, запуск файла из программы синтаксис:
Код: Выделить всё
Название_программы.exe "Полный_путь_до_файла"

Кавычки обязательны, если в пути есть пробелы.
Вот тебе все готовое:
Вложения
Пример.zip
(4.29 Кб) Скачиваний: 55
Алкоголь и сканеры-ваши враги! Не верите-смотрите аватару :-)

Creat0R
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 19
Зарегистрирован: 19.07.2006 (Ср) 2:51
Откуда: Univers://Earth.man

Сообщение Creat0R » 21.07.2006 (Пт) 13:39

Matew
Огромнейшее спасибо! Изображение
Всё таки есть добрые, и знающие своё дело люди на этом свете :) (и форуме).
CreatoR это не ник, CreatoR это стиль жизни!
Мой девиз - Умри, но будь!!!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 38

    TopList