Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> IDE & Clipboard, Хочу чтоб не очищался при запуске 
:(
    Опции темы
bom
Дата 27.8.2004, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 329
Регистрация: 22.2.2004
Где: Казахстан, Алматы

Репутация: 4
Всего: 6



Подскажите как настроить среду разработки VB6, чтобы при запуске она не очищала буфер обмена Виндвз qstn.gif
PM MAIL   Вверх
Naghual
Дата 27.8.2004, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Как настроить сам VB не скажу, но возможно альтернативное решение:
Написать VB-Стартер. Прогу для запуска VB.
Запускается она, берет содержимое буфера в себя, запускает VB, восстанавливает буфер, закрывается.


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
bom
Дата 27.8.2004, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 329
Регистрация: 22.2.2004
Где: Казахстан, Алматы

Репутация: 4
Всего: 6



Спасибо, отличное решение, так и сделаю smile.gif
PM MAIL   Вверх
Naghual
Дата 28.8.2004, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Эх, люблю я нестандартные решения...
tounge.gif


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
bom
Дата 28.8.2004, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 329
Регистрация: 22.2.2004
Где: Казахстан, Алматы

Репутация: 4
Всего: 6



Сделал, все отлично работает biggrin.gif
Для тех кто захочет повторить есть несколько советов:
-Переименовать Стартер в VB6.EXE а VB6.EXE во что ни будь еще.
-После запуска оригинальной программы и перед восстановлением клипборда сделать небольшую задержку, равную времени запуска IDE, у меня ~ 500мс.
-Передавать оригинальной программе параметры запуска.
-Добавить в ресурсы Стартера иконки в количестве и порядке как у оригинальной проги, чтобы не менять пути к DefaultIcon различных расширений, ассоциируемых с VB.

Naghual еще раз спасибо за идею wink.gif

PM MAIL   Вверх
cardinal
Дата 28.8.2004, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



bom, код в студию... smile.gif


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
bom
Дата 28.8.2004, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 329
Регистрация: 22.2.2004
Где: Казахстан, Алматы

Репутация: 4
Всего: 6



Код? Пожалуйста smile.gif
Код
Option Explicit
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub Main()
Dim bufer As String
bufer = Clipboard.GetText
Shell App.Path & "\VB6bak.EXE" & " " & Command, vbNormalFocus
Sleep 500
Clipboard.SetText bufer
End
End Sub

Кроме того нужно, как я уже говорил, в ресурсы добавить 24 иконки как у оригинальной проги и после компиляции приложения изменить их как в оригинальной проге каким ни будь редактором ресурсов (я пользовался Restorator-ом).
Готовый ехе-шник я выслал тебе на мыло, если есть необходимость, можешь разместить его на сервере и опубликовать ссылку wink.gif
PM MAIL   Вверх
Naghual
Дата 28.8.2004, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



На мой взгляд использование здесь Sleep несколько неправильно. В зависимости от быстродействия системы и ее загруженности, таймаут может не отработать свою смысловую нагрузку.
Может попробуеш через API ShellExecute или ShellExecuteEx запускать VB?


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
bom
Дата 28.8.2004, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 329
Регистрация: 22.2.2004
Где: Казахстан, Алматы

Репутация: 4
Всего: 6



Naghual:
Цитата
Может попробуеш через API ShellExecute или ShellExecuteEx запускать VB?

Попробовал, буфер все равно очищается, ShellExecute не ждет конца загрузки а сразу передает управление следующей команде, без задержки видимо не обойтись, величину ее можно увеличить если компьютер слабый.
PM MAIL   Вверх
cardinal
Дата 28.8.2004, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Вот это
Код
bufer = Clipboard.GetText
Shell App.Path & "\VB6bak.EXE" & " " & Command, vbNormalFocus
Sleep 500

можно попробовать заменить на что-нибудь типа:
Код
bufer = Clipboard.GetText
Shell App.Path & "\VB6bak.EXE" & " " & Command, vbNormalFocus
While (Clipboard.GetText = bufer) Do
  Doevents
Loop

Цитата(bom @ 28.8.2004, 13:02)
Готовый ехе-шник я выслал тебе на мыло, если есть необходимость, можешь разместить его на сервере и опубликовать ссылку

Я его еще не получил, но как получу могу прямо в FAQ засунуть...
p.s. если не забуду... мне в последнее время кажется, что что-то я уже хотел там написать и забыл smile.gif


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Naghual
Дата 28.8.2004, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



К cardinal
Ты прав. Интересное решение.
Только оно сработает лиш в том случае, если в буфере уже что-то было. Так что при запуске программы, нужно проверять пустой буфер или нет.
Если буфер пустой - просто запускаем ВБ и все. Никакого слипа не нужно.
Если не пустой - ждем пока он очистится.





--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
bom
Дата 28.8.2004, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 329
Регистрация: 22.2.2004
Где: Казахстан, Алматы

Репутация: 4
Всего: 6



cardinal
Цитата
While (Clipboard.GetText = bufer) Do
  Doevents
Loop

Отличная идея! Немного доработал ее так как клипборду не нравится когда к нему обращаются с такой частотой (выдается ошибка 521 "Can't open clipboard"), добавил задержку в цикл и все стало шоколадно hehe.gif
Код
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub Main()
Dim bufer As String, i As Integer
On Error GoTo er
bufer = Clipboard.GetText
Shell App.Path & "\VB6bak.EXE" & " " & Command, vbNormalFocus
Do While Clipboard.GetText <> vbNullString Or i <> 100
 DoEvents
 Sleep 100
 i = i + 1
Loop
Clipboard.SetText bufer
er:
End
End Sub

Счетчик - на тот случай если по каким то причинам Барсик не запустится или клиборд не очистится, программа все равно выгрузится через 10 сек.
Обновленный ехешник уже движется на твое мыло notify.gif

PM MAIL   Вверх
cardinal
Дата 29.8.2004, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Цитата(Naghual @ 28.8.2004, 19:13)
Если буфер пустой - просто запускаем ВБ и все. Никакого слипа не нужно.
Если не пустой - ждем пока он очистится.

Правильно. Ну и ждем не до бесконечности, а именно с TimeOut'ом, что и сделал bom.
Код
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub Main()
Dim bufer As String, i As Integer
On Error GoTo er
bufer = Clipboard.GetText
Shell App.Path & "\VB6bak.EXE" & " " & Command, vbNormalFocus
Do While Clipboard.GetText <> vbNullString Or i <> 100
DoEvents
Sleep 100
i = i + 1
Loop
Clipboard.SetText bufer
er:
End
End Sub

Я бы немного изменил и сделал так
Код
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub Main()
Dim bufer As String, i As Integer
On Error GoTo er
i = 0
bufer = Clipboard.GetText
Shell App.Path & "\VB6bak.EXE" & " " & Command, vbNormalFocus
Do While Clipboard.GetText <> vbNullString Or i < 100
DoEvents
Sleep 100
i = i + 1
Loop
Clipboard.SetText bufer
er:
End
End Sub

И будет совсем шоколадно. smile.gif Просто для того, чтобы в примере не было нехорошей привычки smile.gif не присваивать переменным начального значения. В Си можно на этом попухнуть. В переменной будет записана белиберда какая-нибудь и такое как
Код
i <> 100

будет работать не так как ты думаешь. Но это так вылизывания и возможно они в VB совсем не нужны, т.к. все переменные равняются после объявления нулю, но все равно smile.gif


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
bom
Дата 29.8.2004, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 329
Регистрация: 22.2.2004
Где: Казахстан, Алматы

Репутация: 4
Всего: 6



Согласен, надо стремиться к совершенству smile.gif
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0543 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.