|
Возможно ли программно установить модем?
|
|||
---|---|---|---|
#18+
Т.е. без панели управления и без запуска "мастера". Конкретно "Стандартный модем 14400" ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2009, 16:34 |
|
Возможно ли программно установить модем?
|
|||
---|---|---|---|
#18+
Если данные подготавливаются, передаются -принимаются из VB, то модем можно не устанавливать. Просто добавить ComCtrl.осх, определить компорт-скорость и далее АТ командами набирать номер или устанавливать соединение для выделенки, и после коннекта передавать -принимать инфу. Ну и тут-же в проге обрабатывать. Как установить драйвер - не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2009, 02:28 |
|
Возможно ли программно установить модем?
|
|||
---|---|---|---|
#18+
Нет, не то. Работать с MSCOMM32.ocx я умею, если вы что-то в этом духе имели ввиду. Я это дело давно использую для управления "через терминалку". Здесь другое...сам процесс передачи как и что меня в данном случае не интересует. Данные передаются-принимаюся программой microsoft fax, интерфейс самого порта предоставляется программой на c++. Модем нужен , т.к. Microsoft Fax с портами "напрямую" не работает. Задача облегчается тем, что прога, которая должна установить модем точно знает на какой порт, +модем "стандартный", т.е. система его знает "в лицо" по определению. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2009, 02:52 |
|
Возможно ли программно установить модем?
|
|||
---|---|---|---|
#18+
По сути нужно вот это: http://support.microsoft.com/kb/194941 First, create a valid Windows NT 4.0 unattended install file. This file must have a [<Modem_Parameter_Section>] section for the modem you are installing. For example: [MyModem] COM1 = "Dial-Up Networking Serial Cable between 2 PCs" To call the Modem Control Panel Applet from the command line, use the following syntax: rundll32.exe shell32.dll,Control_RunDLL modem.cpl,Modems, noui inf=<INF_FileName> sect=<Modem_Parameter_Section> Where the above command is one line, with no space between "Modems," and "noui". For example (if the example above was saved as c:\MyModem.inf): rundll32.exe shell32.dll,Control_RunDLL modem.cpl,Modems, noui inf=c:\MyModem.INF sect=MyModem Но работает оно у меня только до этого места(эту команду я и так знал) rundll32.exe shell32.dll,Control_RunDLL modem.cpl,Modems и выводит вкладку модемы. Пока все что нарыл, там вообще не написано что это в xp и 2003 работать должно... Может с синтаксисом копаться надо, пока никак... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2009, 05:17 |
|
Возможно ли программно установить модем?
|
|||
---|---|---|---|
#18+
Ну вот, собственно и решение. http://support.microsoft.com/kb/304294 Скачиваем exe, кладем распакованное содержимое в c:\modem Запускаем DDK->Windows 2000 Free Build Environment (вот,блин не могу понять чем они отличаются? ) Делаем Код: plaintext 1. 2.
Долго мудохаемся и ругаемся, в конце концов делаем это: 1) Открываем файл MdmInst.с (в VC++ 2005 , естественно) 2) Убираем там ф-цию проверки номера COM-порта на предмет железности (прога по умолчанию ставит модемы только на реальные железные порты, на виртуальные ей наплевать) 3) Убираем проверку, что такой модем уже есть. (Т.е. если уже установлен Стандартный модем 14400, то прога по умолчанию Стандартный модем 14400 #2 ставить не хочет, просто обновляет существующий модем, что неправильно, то что он на другом порту ей наплевать) 4) перекомпилируем это дело заново 5) файл MdmInst.exe кидаем в system32 (если этого не сделать будут некоторые глюки) Короче "Стандартный модем 14400 bps" на порт COM10 устанавливается следующей командой: Код: plaintext
А, ну да Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2009, 01:09 |
|
Возможно ли программно установить модем?
|
|||
---|---|---|---|
#18+
ОПС, и сразу 2 вопроса: 1) А как узнать какие модемы и на каких портах установлены? 2) А как удалить конкретный модем? Естественно не методом тупого опроса через com-порты... Должны ж быть какие-нибудь API и скрипты панели управления... Хотя... в XP Modem.cpl как таковой отсутствует и даже команда ,,Add не работает... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2009, 11:18 |
|
Возможно ли программно установить модем?
|
|||
---|---|---|---|
#18+
Узнать кто где один способ нашел: Win32_POTSModem Class http://msdn.microsoft.com/en-us/library/aa394360(VS.85).aspx Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Интересно, этот WMI в любой системе всегда присутствует?... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2009, 13:25 |
|
Возможно ли программно установить модем?
|
|||
---|---|---|---|
#18+
http://msdn.microsoft.com/en-us/library/dd163210.aspx Пошел искать исходники, вместо исходников нашел откомпилированный exe-шник: \WINDDK\3790.1830\tools\devcon\i386\devcon.exe Итого, выводим DeviceID через WMI: Код: plaintext 1. 2.
COM10: Стандартный модем 14400 bps #2 Gen144 ROOT\MODEM\0003 Тупо даем команду: Код: plaintext 1. 2.
Наиболее интересной является команда Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2009, 16:50 |
|
Возможно ли программно установить модем?
|
|||
---|---|---|---|
#18+
Дмитрий77Ну вот, собственно и решение. http://support.microsoft.com/kb/304294 Дебильный этот пример. Он использует UpdateDriverForPlugAndPlayDevices . Подлость этой ф-ции в том, что она обновляет драйвера всех модемов с заданным HardwareID, в том числе и ранее установленных. А если их уже 50, а надо доустановить 51-й, то это Ж, даже если вызывать ее один раз (как я наловчился делать). Надо использовать InstallSelectedDriver function , а UpdateDriverForPlugAndPlayDevices использовать только для страховки (когда драйвера еще нет в системе). Короче нарисовал нормальный код на VB6. Полный пример приложил. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2014, 04:07 |
|
Возможно ли программно установить модем?
|
|||
---|---|---|---|
#18+
Интересный вопрос следующий. Чтобы установить модем на x64 системе надо компилировать этот код под x64, а на VB6 это по определению невозможно (32 бит). Даже не пробуя, понятно чего будет: ERROR_IN_WOW64 The calling application is a 32-bit application that is attempting to execute in a 64-bit environment, which is not allowed. For more information, see Installing Devices on 64-Bit Systems. Или можно извернуться? Хотя скорее всего придется допиливать пример из C++ ссылка на кот. дана (нужно objfre_w2k_x86 и objfre_wnet_amd64). ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2014, 04:17 |
|
Возможно ли программно установить модем?
|
|||
---|---|---|---|
#18+
Допилил код. Доразобрался со структурами, для A-версий разумно объявлять строки как байтовые массивы фиксированной длины, убрал W-версии ф-ций (чтоб везде было A, а то бардак какой-то). Задаю INF явно через m_DeviceInstallParams As SP_DEVINSTALL_PARAMS и DI_ENUMSINGLEINF Теперь имеем "Установка только из указанного INF" (неважно, установлен ли уже подходящий драйвер в системе или еще нет). Т.е. у меня теперь всегда работает InstallSelectedDriver (строго заданный драйвер на строго заданный девайс). UpdateDriverForPlugAndPlayDevices получается вообще не нужен. Код по идее годится для установки любого драйвера если убрать специфическое для модема "AttachedTo". Работает естественно только на 32-битных системах. Для x64 к сожалению только C++ и компиляция в 64-битный код. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 329. 330. 331. 332. 333. 334. 335. 336. 337. 338. 339. 340. 341. 342. 343. 344. 345. 346. 347. 348. 349. 350. 351. 352. 353. 354. 355. 356. 357. 358. 359. 360. 361. 362. 363. 364. 365. 366. 367. 368.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2014, 13:02 |
|
|
start [/forum/topic.php?fid=60&msg=35791046&tid=2156359]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
58ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 157ms |
0 / 0 |