Страница: 1 |
Страница: 1 |
Вопрос: !ListBox. Второе пришествие :)
Добавлено: 08.03.06 16:38
Автор вопроса: Android
Привет всем! Жаль, что не вижу искаженных радостью лиц :)
Моя проблема так и осталась нерешённой. И если кто сможет скинуть кусочек коду, буду очень признателен.
Я остановился на процедуре
Private Sub Form_Load()
List1.AddItem Command$
End Sub
Проблема заключается в том, что при вызове одного файла, всё ОК, а при вызове нескольких файлов, запускается столько же копий моей проги.
Мне на одном из форумов попалась интересная идея: запрет запуска второй копии приложения. Но как отловить все коммандные строки и вписать их в For...Next?
Если кто подзабыл о чём речь, то милости просим на http://www.vbnet.ru/forum/show.aspx?id=101003
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
Sacred Phoenix
ICQ: 304238252
Вопросов: 52
Ответов: 927
Профиль | | #1
Добавлено: 08.03.06 19:02
2 Android: кинь мне свой email, я сделаю и скину тебе проект Насколько я понял, тебе надо:
1. Разрешить запуск только 1ой копии проги
2. Передавать в 1ую копию проги командные строки остальных копий
Номер ответа: 2
Автор ответа:
Android
Вопросов: 6
Ответов: 23
Профиль | | #2
Добавлено: 08.03.06 22:31
Да, всё правильно! Буду очень признателен тебе за это! oct1999_at_bk.ru
Номер ответа: 3
Автор ответа:
[root]
Вопросов: 45
Ответов: 1212
Web-сайт:
Профиль | | #3
Добавлено: 09.03.06 07:53
'// Объявления
'// Функции
Private Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, phkResult As Long, lpdwDisposition As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
'// Структуры
Private Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Boolean
End Type
'// Константы
Const HKEY_CLASSES_ROOT = &H80000000
Const REG_SZ = 1
Const KEY_ALL_ACCESS = &H3F
'// Функция для ассоциации типа файла с приложением
'// FileType - расширение файла
Public Sub AsProgram(FileType As String)
Dim retval As Long
Dim Result As Long
Dim SA As SECURITY_ATTRIBUTES
Dim sPath As String
'// Создаем ключ для программы
retval = RegCreateKeyEx(HKEY_CLASSES_ROOT, App.Title, 0, vbNullString, 0, KEY_ALL_ACCESS, SA, Result, &H1)
'// Присваиваем значению по умолчанию название программы
RegSetValueEx Result, "", 0, REG_SZ, ByVal App.Title, Len(App.Title)
'// Создаём ключ, связанный с расширением файла
retval = RegCreateKeyEx(HKEY_CLASSES_ROOT, FileType, 0, vbNullString, 0, KEY_ALL_ACCESS, SA, Result, &H1)
'// Присваиваем значению по умолчанию название программы
RegSetValueEx Result, "", 0, REG_SZ, ByVal App.Title, Len(App.Title)
'// Последние шаг - ассоциация типа с приложением
'//Определяем командную строку для приложения
If Right(App.Path, 1) = "\" Then
sPath = App.Path & App.EXEName & ".exe %1"
Else
sPath = App.Path & "\" & App.EXEName & ".exe %1"
End If
retval = RegCreateKeyEx(HKEY_CLASSES_ROOT, App.Title & "\shell\open\command", 0, vbNullString, 0, KEY_ALL_ACCESS, SA, Result, &H1)
RegSetValueEx Result, "", 0, REG_SZ, ByVal sPath, Len(sPath)
End Sub
Private Sub Command1_Click()
AsProgram ".txt"
End Sub
Номер ответа: 4
Автор ответа:
Android
Вопросов: 6
Ответов: 23
Профиль | | #4
Добавлено: 09.03.06 22:03
[root], насколько я понял из кода , ты меня продолжаешь учить, как ассоциировать файл с приложением. Я те очень благодарен за то, что нашёл время, но вопрос ведь сейчас не в этом! Меня долго и упорно учили, как делать ассоциации (интересно, почему-то никто не подсказал, как назначить ассоциированному файлу икону приложения? ) Чтобы ассоциировать, я могу и reg- файл написать, это не проблема.
Ещё раз спасибо!
Номер ответа: 5
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #5
Добавлено: 10.03.06 23:30
Думаю там ассоциировать надо не "%1" а чё-то другое, найди прогу которая открывает несколько файлов, и посмотри чё там у неё... Потом перехвати её Command$ будешь знать как приходят данные, ну а потом догадаешся как распарсить их
Номер ответа: 6
Автор ответа:
Android
Вопросов: 6
Ответов: 23
Профиль | | #6
Добавлено: 11.03.06 22:38
WinAmp - "C:\Program Files\Winamp\Winamp.exe" "%1"
Пока идей, связанных с перехватом Command у winampa нету. По имени окна чтоли перехватывать? :/
Лёгкая задача для такого суперопытного профи, как я! ))
Номер ответа: 7
Автор ответа:
Android
Вопросов: 6
Ответов: 23
Профиль | | #7
Добавлено: 12.03.06 22:24
Сё! Нашёл, чё надо!
Если кому понадобится - мыльте, отмылю
Номер ответа: 8
Автор ответа:
[root]
Вопросов: 45
Ответов: 1212
Web-сайт:
Профиль | | #8
Добавлено: 13.03.06 06:15
давай посмотрим, inporta[O]yandex[o]ru