Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Getcommandline Добавлено: 27.05.10 03:15  

Автор вопроса:  LEX1ERS | ICQ: 4204936 
Добрый день. Ранее я задавал вопрос на этом форуме - "открыть с помощью "проэкт1" в итоге посоветовали скачать пример.... Тема вопроса такова...Я бы сказал даже просьба, найти исходник. Как открыть текстовый файл через explorer 2ным кликом мыши, как блокнот? Отлично было бы пример...Спасибо

Ответить

  Ответы Всего ответов: 15  

Номер ответа: 1
Автор ответа:
 LEX1ERS



ICQ: 4204936 

Вопросов: 38
Ответов: 100
 Профиль | | #1 Добавлено: 27.05.10 03:20
А, да! Забыл! VB 6 )

Ответить

Номер ответа: 2
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #2
Добавлено: 27.05.10 08:24
Гугли апи-функцию ShellExecute

Ответить

Номер ответа: 3
Автор ответа:
 AWP



ICQ: 345685652 

Вопросов: 96
Ответов: 1212
 Web-сайт: xawp.narod.ru
 Профиль | | #3
Добавлено: 27.05.10 11:56
мне нравиться постановка вопроса
>Как открыть текстовый файл через explorer 2ным кликом мыши, как блокнот?

ну как, двойным кликом, через explorer :)
причем тут vb6 :)

Ответить

Номер ответа: 4
Автор ответа:
 LEX1ERS



ICQ: 4204936 

Вопросов: 38
Ответов: 100
 Профиль | | #4 Добавлено: 28.05.10 07:00
О. AWP ! Спасибо! Вполне логично. Я не знал как сформулировать точнее свой вопрос, так что бы "форумчане" поняли смысл вопроса! Я рад, что тебе понравилось) ладно, переформулирую данный вопрос!

Как передать программе данные от ассоцированных файлов типа - тхт?

Так более понятней?))

Ответить

Номер ответа: 5
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #5
Добавлено: 28.05.10 09:55
Так более понятней?))

Чуть-чуть)

Какие данные? Чтобы файл такого-то типа, ассоциированный с твоей программой, открывался твоей программой? Ты два раза щелкаешь на файле, запускается твоя программа. В твоей программе в специальной глобальной переменной Command$ будет имя открываемого файла в кавычках. Убераешь ковычки и открываешь, смекаешь?

Ответить

Номер ответа: 6
Автор ответа:
 AWP



ICQ: 345685652 

Вопросов: 96
Ответов: 1212
 Web-сайт: xawp.narod.ru
 Профиль | | #6
Добавлено: 28.05.10 11:43
возможно, ему еще понадобиться ветка реестра, где все ассоциации хранятся. Ну, чтобы ассоциацию провести программно.
я их не помню, все копипастом...

Ответить

Номер ответа: 7
Автор ответа:
 Uhehesh



Вопросов: 4
Ответов: 42
 Web-сайт: mda.net.ru
 Профиль | | #7
Добавлено: 28.05.10 15:06
(А на VBNet просто:
  1. Dim filepath As String
  2. filepath = Command()
  3. filepath = Replace(filepath, Chr(34), ""
  4. OpenFileDialog1.FileName = filepath
  5. TextBox1.Text = My.Computer.FileSystem.ReadAllText(filepath)

:))

Ответить

Номер ответа: 8
Автор ответа:
 VbStarter



ICQ: 357911808 

Вопросов: 118
Ответов: 1340
 Web-сайт: moscowdevils.ru
 Профиль | | #8
Добавлено: 28.05.10 20:26
Надо копать в HKeyClassesRoot, искать папку с нужным расширением как название, далее надо поправлять какойто рег. файл.

Ответить

Номер ответа: 9
Автор ответа:
 Just



Вопросов: 4
Ответов: 330
 Профиль | | #9 Добавлено: 28.05.10 21:44
lex1ers. еп ну я те же уже все объяснял месяца так 2-3 назад. я ж еще и сказал: "если че не понятно - пиши", и вот вторая тема того же содержания и все про то же... и что самое прикольное опять такая же постановка вопроса интересная...

в общих чертах набросал как должно выглядеть программное выполнение ассоциирования (делал под xp - за остальные не ручаюсь)


это в форму
  1.  
  2. Option Explicit
  3.  
  4. Private Sub Form_Load()
  5. MsgBox Command$ ' путь к файлу который пытаются открыть через проводник
  6.  
  7.  
  8. Dim sProgPath As String, sKeyStr As String
  9. sProgPath = App.Path & "\" & App.EXEName & ".exe" ' полный путь к самой программе
  10.  
  11. sKeyStr = CetValueInfo(HKEY_CLASSES_ROOT, "txtfile\shell\open\command", "")
  12. If sKeyStr = "" Or sKeyStr <> sProgPath & " %1" Then
  13.   Select Case MsgBox("Установить ассоциацию текстовых документов с этой программой?", vbYesNo + vbQuestion)
  14.     Case vbYes ' установить ассоциацию
  15.       Call CreateKeyStr(HKEY_CLASSES_ROOT, "txtfile\DefaultIcon", "", sProgPath)
  16.       Call CreateKeyStr(HKEY_CLASSES_ROOT, "txtfile\shell\open\command", "", sProgPath & " %1")
  17.     Case vbNo ' так можно удалить...
  18.       'Call DeleteKey(HKEY_CLASSES_ROOT, "txtfile\DefaultIcon")
  19.       'Call DeleteKey(HKEY_CLASSES_ROOT, "txtfile\shell\open\command")
  20.       'Call DeleteKey(HKEY_CLASSES_ROOT, "txtfile\shell\open")
  21.       'Call DeleteKey(HKEY_CLASSES_ROOT, "txtfile\shell")
  22.   End Select
  23. End If
  24.  
  25. ' восстановить ассоциацию с блокнотом
  26. 'Call CreateKeyStr(HKEY_CLASSES_ROOT, "txtfile\DefaultIcon", "", "%SystemRoot%\system32\shell32.dll,-152")
  27. 'Call CreateKeyStr(HKEY_CLASSES_ROOT, "txtfile\shell\open\command", "", "%SystemRoot%\system32\NOTEPAD.EXE %1")
  28.  
  29. Unload Me
  30. End Sub




это в модуль
  1.  
  2. Option Explicit
  3.  
  4. Public Const HKEY_CLASSES_ROOT = &H80000000
  5. Public Const HKEY_CURRENT_USER = &H80000001
  6. Public Const HKEY_LOCAL_MACHINE = &H80000002
  7. Public Const HKEY_USERS = &H80000003
  8. Public Const HKEY_PERFORMANCE_DATA = &H80000004
  9. Public Const HKEY_CURRENT_CONFIG = &H80000005
  10. Public Const HKEY_DYN_DATA = &H80000006
  11.  
  12.  
  13. Private Const REG_SZ = 1
  14. Private Const REG_OPTION_NON_VOLATILE = 0
  15. Private Const STANDARD_RIGHTS_ALL = &H1F0000
  16. Private Const SYNCHRONIZE = &H100000
  17. Private Const KEY_QUERY_VALUE = &H1
  18. Private Const KEY_SET_VALUE = &H2
  19. Private Const KEY_CREATE_SUB_KEY = &H4
  20. Private Const KEY_ENUMERATE_SUB_KEYS = &H8
  21. Private Const KEY_NOTIFY = &H10
  22. Private Const KEY_CREATE_LINK = &H20
  23. Private Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))
  24.  
  25. 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, ByVal lpSecurityAttributes As Long, phkResult As Long, lpdwDisposition As Long) As Long
  26. Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hkey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
  27. Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hkey As Long) As Long
  28. Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hkey As Long, ByVal lpValueName As String) As Long
  29. Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hkey As Long, ByVal lpSubKey As String) As Long
  30. Private Declare Function RegSetValueExStr Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hkey As Long, ByVal lpValueName As String, ByVal reserved As Long, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long
  31. Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hkey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
  32. Private Declare Function RegQueryValueExStr Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hkey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, ByVal lpData As String, lpcbData As Long) As Long
  33.  
  34.  
  35.  
  36.  
  37. ' Получить значение параметра
  38. Public Function CetValueInfo(lKey As Long, sSubKey As String, sValueName As String) As String
  39. On Error Resume Next
  40. Dim hKeyName As Long
  41. Dim fData As String
  42. Dim fDataLen As Long
  43. Dim fType As Long
  44.  
  45. RegOpenKeyEx lKey, sSubKey, 0&, KEY_ALL_ACCESS, hKeyName
  46. If hKeyName > 0 Then
  47.     RegQueryValueEx hKeyName, sValueName, 0&, fType, ByVal 0&, fDataLen
  48.     If fDataLen > 0 Then
  49.       fData = String$(fDataLen - 1, vbNullChar)
  50.       RegQueryValueExStr hKeyName, sValueName, 0&, fType, fData, fDataLen
  51.     End If
  52. RegCloseKey hKeyName
  53. End If
  54. CetValueInfo = fData
  55. End Function
  56.  
  57.  
  58.  
  59. 'Создать строковый параметр
  60. Public Sub CreateKeyStr(lKey As Long, sSubKey As String, sValueName As String, sValue As String)
  61. On Error Resume Next
  62. Dim hKeyName As Long
  63. RegCreateKeyEx lKey, sSubKey, 0&, vbNullString, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, 0&, hKeyName, 0&
  64. If hKeyName > 0 Then
  65.   RegSetValueExStr hKeyName, sValueName, 0&, REG_SZ, sValue, Len(sValue)
  66.   RegCloseKey hKeyName
  67. End If
  68. End Sub
  69.  
  70.  
  71.  
  72. ' Удалить параметр
  73. Public Sub DeleteKeyValue(lKey As Long, sSubKey As String, sValueName As String)
  74. On Error Resume Next
  75. Dim hKeyName As Long
  76. RegOpenKeyEx lKey, sSubKey, 0&, KEY_ALL_ACCESS, hKeyName
  77. If hKeyName > 0 Then
  78.   RegDeleteValue hKeyName, sValueName
  79.   RegCloseKey hKeyName
  80. End If
  81. End Sub
  82.  
  83.  
  84.  
  85. ' Удалить ключ
  86. Public Function DeleteKey(lKey As Long, sSubKey As String)
  87. On Error Resume Next
  88. ' Удаляем ключи (удаляемый ключ не должен содержать подключей)
  89.   RegDeleteKey lKey, sSubKey
  90. End Function

Ответить

Номер ответа: 10
Автор ответа:
 VbStarter



ICQ: 357911808 

Вопросов: 118
Ответов: 1340
 Web-сайт: moscowdevils.ru
 Профиль | | #10
Добавлено: 28.05.10 23:15
:)

Ответить

Номер ответа: 11
Автор ответа:
 LEX1ERS



ICQ: 4204936 

Вопросов: 38
Ответов: 100
 Профиль | | #11 Добавлено: 29.05.10 16:04
Jast: Спасибо, но мне нужно было то что было написанно в 5 ом посту. как через реестр - я знаю, мне нужно было например передать программе адресс выбранного файла. Ну в итоге можно было бы написать более проще пример msgbox command$ . Я просто думал что там система гораздо сложнее...А оказалось это всеволиш одна команда - command$. И все таки спасибо всем, что помогли разобраться!

Ответить

Номер ответа: 12
Автор ответа:
 LEX1ERS



ICQ: 4204936 

Вопросов: 38
Ответов: 100
 Профиль | | #12 Добавлено: 29.05.10 16:04
Jast: Спасибо, но мне нужно было то что было написанно в 5 ом посту. как через реестр - я знаю, мне нужно было например передать программе адресс выбранного файла. Ну в итоге можно было бы написать более проще пример msgbox command$ . Я просто думал что там система гораздо сложнее...А оказалось это всеволиш одна команда - command$. И все таки спасибо всем, что помогли разобраться!

Ответить

Номер ответа: 13
Автор ответа:
 VbStarter



ICQ: 357911808 

Вопросов: 118
Ответов: 1340
 Web-сайт: moscowdevils.ru
 Профиль | | #13
Добавлено: 29.05.10 17:51
У lex1ers'овского браузера сообщения двоятся в экране. :)

Ответить

Номер ответа: 14
Автор ответа:
 VbStarter



ICQ: 357911808 

Вопросов: 118
Ответов: 1340
 Web-сайт: moscowdevils.ru
 Профиль | | #14
Добавлено: 29.05.10 17:56
А на метуе есть смайлик сумашествия?

Ответить

Номер ответа: 15
Автор ответа:
 LEX1ERS



ICQ: 4204936 

Вопросов: 38
Ответов: 100
 Профиль | | #15 Добавлено: 29.05.10 20:46
хD.Сорри, я с мобилы, и порой связь с инетом, пропадает...))))

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам