Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.87/30: Рейтинг темы: голосов - 30, средняя оценка - 4.87
2 / 2 / 0
Регистрация: 03.03.2013
Сообщений: 65

Ищу пример работы с com портом

28.01.2014, 10:55. Показов 6334. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Возникла необходимость написать приложение для работы с ком-портом.
Нужно: дозвониться по номеру телефона из списка, подождать ответа, если ответ на звонок есть то воспроизвести аудиофайл, положить трубку и набрать следующий номер из списка.
Вся проблема в том, что я никогда раньше не работал с ком-портами.
Есть ли какой нибудь пример (исходник) работы с MSComm или через API?
Команды АТ я для мадема нашел. Пака разбираюсь. Буду благодарен любому наставлению на путь истиный.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.01.2014, 10:55
Ответы с готовыми решениями:

Нужен пример работы с COM портом
Есть прибор работает через com port . Отправляя ему 1 любой символ, он отправляет строку. Нужны примеры faq по работе с ком портом си. ...

Нужен пример работы с последовательным портом
Всем здравствуйте. Поделитесь пожалуйста примером роаботы с последовательным портом. Желательно через API, можно и через...

Рабочий пример (исходник) терминала для работы с COM-портом
Здравствуйте, нет ли у кого нибудь рабочего примера(исходника) терминала для работы с COM-портом для Delphi7? Заранее благодарю!

26
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
28.01.2014, 11:25
Лучший ответ Сообщение было отмечено Nordis как решение

Решение

Есть интересный код, может пригодится
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Private Declare Function tapiRequestMakeCall Lib "TAPI32.DLL" (ByVal Dest As String, ByVal AppName As String, ByVal CalledParty As String, ByVal Comment As String) As Long
Private Sub PhoneCall(sNumber As String, sName As String)
    Dim lRetVal As Long
    lRetVal = tapiRequestMakeCall(Trim$(sNumber), App.Title, Trim$(sName), "")
    If lRetVal <> 0 Then
        'Couldn't make the call.
        'Take appropriate action
    End If
End Sub
Private Sub Form_Load()
    PhoneCall "123456", "TheName"
End Sub
А вообще звонилка вот
Visual Basic
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
Option Explicit
DefInt A-Z
Dim CancelFlag As Boolean
Private Sub CancelButton_Click()
CancelFlag = True
CancelButton.Enabled = False
End Sub
Private Sub DialButton_Click()
Dim Number$
On Error GoTo Err_click
'Number$ = Selection.Value
Number$ = "411055"
If Number$ = "" And Not IsNumeric(Number$) Then Exit Sub
DialButton.Enabled = False
CancelButton.Enabled = True
Status = "Dialing — " + Number$
Dial Number$
DialButton.Enabled = True
CancelButton.Enabled = False
Err_click:
End Sub
Private Sub Dial(Number$)
Dim DialString$, FromModem$, dummy
' AT is the Hayes compatible ATTENTION command and is required to send commands to the modem.
' DT means "Dial Tone." The Dial command uses touch tones, as opposed to pulse(DP = Dial Pulse).
' Numbers$ is the phone number being dialed.
' A semicolon tells the modem to return to command mode after dialing (important).
' A carriage return, vbCr, is required when sending commands to the modem.
DialString$ = "ATDP" + Number$ + ";" + vbCr
' Communications port settings.
' Assuming that a mouse is attached to COM1, CommPort is set to 2
MSComm1.CommPort = 3
MSComm1.Settings = "9600,N,8,1"
' Open the communications port.
On Error Resume Next
MSComm1.PortOpen = True
If Err Then
MsgBox "COM2: not available. Change the CommPort property to another port."
Exit Sub
End If
' Flush the input buffer.
MSComm1.InBufferCount = 0
' Dial the number.
MSComm1.Output = DialString$
' Wait for "OK" to come back from the modem.
Do
dummy = DoEvents()
DoEvents
' If there is data in the buffer, then read it.
If MSComm1.InBufferCount Then
FromModem$ = FromModem$ + MSComm1.Input
' Check for "OK".
If InStr(FromModem$, "OK") Then
' Notify the user to pick up the phone.
Beep
MsgBox "Please pick up the phone and either press Enter or click OK"
Exit Do
' Status = "Dialing — " + FromModem$ + " — " + Number$
ElseIf InStr(FromModem$, "BUSY") Then
Disconnect
Call Dial(Number$)
Exit Sub
ElseIf InStr(FromModem$, "Error") Then
MsgBox "Error " + FromModem$
Exit Do
End If
End If
' Did the user choose Cancel?
If CancelFlag Then
CancelFlag = False
Exit Do
End If
Loop
Disconnect
 
End Sub
'Private Sub DialButton_GotFocus()
'Cells(Selection.Row, Selection.Column).Select
'End Sub
Private Sub Status_Click()
On Error Resume Next
DialButton.Enabled = True
'QuitButton.Enabled = False
CancelButton.Enabled = True
' Disconnect the modem.
MSComm1.Output = "ATH" + vbCr
' Close the port.
MSComm1.PortOpen = False
End Sub
Public Sub Disconnect()
' Disconnect the modem.
MSComm1.Output = "ATH" + vbCr
' Close the port.
MSComm1.PortOpen = False
End Sub
1
2 / 2 / 0
Регистрация: 03.03.2013
Сообщений: 65
02.02.2014, 20:42  [ТС]
Как то не очень получается у меня.
Вобщем пака
Visual Basic
1
2
3
4
MSComm1.CommPort = 7
MSComm1.Settings = "9600,N,8,1"
MSComm1.PortOpen = True
MSComm1.Output = "ATDP" + " 8912.........22" + ";" + vbCr
Модем звонит на указаный номер. Как мне узнать что абонент поднял трубку?
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
02.02.2014, 21:16
Цитата Сообщение от Nordis Посмотреть сообщение
Как мне узнать что абонент поднял трубку?
Если модем это делать не умеет, то скорее всего ни как.
Отслеживание события поднятия трубки
0
2 / 2 / 0
Регистрация: 03.03.2013
Сообщений: 65
02.02.2014, 23:17  [ТС]
Наверное мне следовало написать, что модем USB, Huawei E3131. В программе автодозвона как то она определяет что трубка поднята и только после этого начинает воспроизводить аудио файл. Значит такая возможность есть?

Добавлено через 1 час 4 минуты
Все, спасибо, команды АТ входящего, поднятия трубки и просто сброса отловил используя другой телефон.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
03.02.2014, 08:09
Цитата Сообщение от Nordis Посмотреть сообщение
команды АТ входящего, поднятия трубки и просто сброса отловил используя другой телефон.
Ну так написал бы эти команды - эта тема часто всплывает в Интернете. Помоги людям!
0
2 / 2 / 0
Регистрация: 03.03.2013
Сообщений: 65
03.02.2014, 21:31  [ТС]
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Ну так написал бы эти команды - эта тема часто всплывает в Интернете. Помоги людям!
Да не вопрос. Вот почему то люди которые уже умеют это делать тщательно скрывают свои знания, поискав по интернету, нашел только 3 программы которые можно использовать для тех целей которые я преследую. Я так понимаю это коммерция. Когда программа уверено будит работать, выложу исходник, обещаю. Но мне сейчас нужно следующее. Как теперь проиграть файл в линию? Вычитал вот что... Звук модему должен передаваться порциями по 320 байт каждые 0.02 секунды
формат звуковых данных - pcm, моно, 8000 Герц, 16 бит, signed
# Устанавливаем служебную переменную $| в единицу это отключает буферизацию.
# Таким образом данные в звуковой порт будут отправляться незамедлительно.
$|=1;

# Цикл по буферу с 320 байтными кусками голосового сообщения
foreach my $c (@{$l_bufer}) {
# Запись очередного куска в голосовой порт модема
syswrite $SENDPORT_WAV, $c, 320;

# Ожидаем 0.02 секунды перед тем как продолжить цикл
sleep(0.02);
}
Это perl скрипт, ничерта не понимаю как это риалезовать на бейсике. Помогите пожалуйста...
оригинал статьи тут http://habrahabr.ru/post/192930/ к сожалению с автором связаться пака нет возможности, и файлы которые он предлагает скачть не качаются, либо комп выключен либо файлы удалены.
0
2 / 2 / 0
Регистрация: 03.03.2013
Сообщений: 65
05.02.2014, 10:41  [ТС]
Как организовать цикл деления аудиофайла WAV по 320 байт чтоб передавать его в порт каждые 0.02 секунды
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
05.02.2014, 11:42
Цитата Сообщение от Nordis Посмотреть сообщение
Как организовать цикл деления аудиофайла WAV по 320 байт чтоб передавать его в порт каждые 0.02 секунды
Тебе сырые данные передавать или с заголовком?
0
2 / 2 / 0
Регистрация: 03.03.2013
Сообщений: 65
05.02.2014, 16:45  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Тебе сырые данные передавать или с заголовком?
Прошу не шуметь если вопрос глупый. Что значит сырые данные?
Мне нужно взять кусок 320 байт от файла, переслать его в звуковой порт, подождать 0,02 сек и снова отправить 320 байт в порт. Ну хотябы как поделить файл на эти самые куски по 320 байт?
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
05.02.2014, 16:50
Ну wav состоит из чанков, например fmt - формат, data - сами данные.
Я как-то делал программу для стеганографии (скрывал файлы внутри WAV файлов),вот оттуда пример правильного чтения данных WAV файла:
Visual Basic
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
Option Explicit
 
Private Type MMCKINFO
    ckid As Long
    ckSize As Long
    fccType As Long
    dwDataOffset As Long
    dwFlags As Long
End Type
Public Type WAVEFORMAT
    wFormatTag As Integer
    nChannels As Integer
    nSamplesPerSec As Long
    nAvgBytesPerSec As Long
    nBlockAlign As Integer
    wBitsPerSample As Integer
    cbSize As Integer
End Type
 
Private Declare Function mmioClose Lib "winmm.dll" (ByVal hmmio As Long, ByVal uFlags As Long) As Long
Private Declare Function mmioDescend Lib "winmm.dll" (ByVal hmmio As Long, lpck As MMCKINFO, lpckParent As Any, ByVal uFlags As Long) As Long
Private Declare Function mmioOpen Lib "winmm.dll" Alias "mmioOpenA" (ByVal szFileName As String, lpmmioinfo As Any, ByVal dwOpenFlags As Long) As Long
Private Declare Function mmioRead Lib "winmm.dll" (ByVal hmmio As Long, pch As Any, ByVal cch As Long) As Long
Private Declare Function mmioStringToFOURCC Lib "winmm.dll" Alias "mmioStringToFOURCCA" (ByVal sz As String, ByVal uFlags As Long) As Long
Private Declare Function mmioAscend Lib "winmm.dll" (ByVal hmmio As Long, lpck As MMCKINFO, ByVal uFlags As Long) As Long
 
Private Const MMIO_READ = &H0
Private Const MMIO_FINDCHUNK = &H10
Private Const MMIO_FINDRIFF = &H20
 
Public Format As WAVEFORMAT             ' Формат файла
Public WaveData() As Integer            ' Данные звукового файла
Public Offset As Long                   ' Смещение данных относительно начала файла
' Открытие Wav файла
Public Function ReadWaveFile(FileName As String) As Boolean
    Dim hIn As Long, ret As Long, Inf As MMCKINFO, sInf As MMCKINFO, ct As Long
    
    hIn = mmioOpen(FileName, ByVal 0, MMIO_READ)            ' Открываем файл
    If (hIn = 0) Then MsgBox "Ошибка открытия файла": Exit Function
 
    Inf.fccType = mmioStringToFOURCC("WAVE", 0)             ' Проверка является ли вав файлом
    If mmioDescend(hIn, Inf, ByVal 0, MMIO_FINDRIFF) Then _
        mmioClose hIn, 0: MsgBox "Не являеться звуковым файлом": Exit Function
    sInf.ckid = mmioStringToFOURCC("fmt", 0)                 ' Ишем чанк с форматом
    If mmioDescend(hIn, sInf, Inf, MMIO_FINDCHUNK) Then _
        mmioClose hIn, 0: MsgBox "Не найден чанк с форматом": Exit Function
    ' Проверяем размер формата
    If sInf.ckSize > Len(Format) Then _
        mmioClose hIn, 0: MsgBox "Не поддерживаемый формат": Exit Function
    ' Читаем формат
    If mmioRead(hIn, Format, sInf.ckSize) = -1 Then _
        mmioClose hIn, 0: MsgBox "Не возможно прочитать формат": Exit Function
        
    mmioAscend hIn, sInf, 0
    
    If Format.wBitsPerSample <> 16 Then _
        mmioClose hIn, 0: MsgBox "Поддерживается только 16 бит на семпл": Exit Function
    ' Ищем чанк с данными
    sInf.ckid = mmioStringToFOURCC("data", 0)
    If mmioDescend(hIn, sInf, Inf, MMIO_FINDCHUNK) Then _
        mmioClose hIn, 0: MsgBox "Не найдены данные в вав файле ": Exit Function
    
    ct = sInf.ckSize \ 2        ' Получаем количество выборок
    If ct = 0 Then mmioClose hIn, 0: MsgBox "Нулевой размер файла": Exit Function
    
    ReDim WaveData(ct - 1)      ' Выделяем буфер
    
    Offset = sInf.dwDataOffset  ' Указываем смещение
    
    If mmioRead(hIn, WaveData(0), sInf.ckSize) = -1 Then _
        mmioClose hIn, 0: MsgBox "Не возможно прочитать данные": Exit Function
        
    mmioClose hIn, 0                                        ' Закрываем файл
    
    ReadWaveFile = True
End Function
2
2 / 2 / 0
Регистрация: 03.03.2013
Сообщений: 65
05.02.2014, 20:04  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Ну wav состоит из чанков, например fmt - формат, data - сами данные.
Не получается таким образом. Другой вопрос. Как открыть wav как бинарный и считать в переменную 320(триста двадцать) байт?
Visual Basic
1
2
3
4
5
6
7
8
9
10
Dim MyFile 
 
Dim usr As String * 1 
 MyFile = FreeFile 
 
Open ("C:mybf.txt") For Binary As #MyFile 
 
Get #MyFile, 320, usr 
 
Close #MyFile
так правильно?
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
05.02.2014, 20:05
Что у тебя не получаеться? Ты понимаешь что нельзя просто взыть и открыть Wav файл, у него есть заголовок и могут быть другие данные вплоть до других звуков.
0
2 / 2 / 0
Регистрация: 03.03.2013
Сообщений: 65
05.02.2014, 20:30  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Что у тебя не получаеться? Ты понимаешь что нельзя просто взыть и открыть Wav файл, у него есть заголовок и могут быть другие данные вплоть до других звуков.
Я кажется вообще не потому пути пошел. Мне нужно каким то образом проиграть файл wav в com порт. Про то что файл нужно подавать порциями по 320 байт я нашел в статье

Perl
1
2
3
4
5
6
7
8
9
10
11
# Цикл по буферу с 320 байтными кусками голосового сообщения
    foreach my $c (@{$l_bufer}) {
     # Запись очередного куска в голосовой порт модема
     syswrite  $SENDPORT_WAV, $c, 320;
 
     # Ожидаем 0.02 секунды перед тем как продолжить цикл
     sleep(0.02);
    }
 
    # Вешаем трубку.
    at_send('AT+CHUP');
В начале кода написано это
В большинстве дистрибутивов Linux, при подключении данного модема в /dev создаются 3 usb интерфейса. обычно это:
/dev/ttyUSB0 — командный интерфейс модема
/dev/ttyUSB1 — голосовой(при включенном голосовом режиме) интерфейс модема
/dev/ttyUSB2 — командный интерфейс модема. Отличается от /dev/ttyUSB0 тем что с него можно читать не только ответы модема на команды, а также служебные сообщения. Такие как данные о качестве сигнала, вывод ^CEND и прочее.

Для начала работы с модемом достаточно открыть как файл один из командных интерфейсов на чтение и запись.
Чтобы отправить модему команду — нужно записать ее в открытый файл интерфейса.
Чтобы получить ответ модема на данную команду — нужно прочесть его из открытого файла интерфейса.
Видимо в Линуксе порты можно открывать как файлы, в этой связи и подача их в порт как фал.
В моем случае нужно искать другое решение.
Может воспроизвести ега и взять аудио сигнал со звуковой карты. хотя не вариант конечно.
0
Эксперт по электронике
6841 / 3265 / 338
Регистрация: 28.10.2011
Сообщений: 12,752
Записей в блоге: 7
05.02.2014, 20:57
Цитата Сообщение от Nordis Посмотреть сообщение
Видимо в Линуксе порты можно открывать как файлы, в этой связи и подача их в порт как фал.
В виндовс порт так же открывается как файл и запись/чтение аналогичное файлу.
1
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
05.02.2014, 21:04
Используй WriteFile и асинхронную запись.
1
2 / 2 / 0
Регистрация: 03.03.2013
Сообщений: 65
05.02.2014, 21:45  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Используй WriteFile и асинхронную запись.
ОК, спасибо. Значит всетаки можно передавать wav файл байтами. Ну как то же Perl это просто так делает???

Добавлено через 3 минуты
Цитата Сообщение от locm Посмотреть сообщение
В виндовс порт так же открывается как файл и запись/чтение аналогичное файлу.
Подскажите как это делается?

Добавлено через 33 минуты
Может быть есть какой нибудь пример?
0
Эксперт по электронике
6841 / 3265 / 338
Регистрация: 28.10.2011
Сообщений: 12,752
Записей в блоге: 7
05.02.2014, 23:51
Цитата Сообщение от Nordis Посмотреть сообщение
Может быть есть какой нибудь пример?
http://ru.wikibooks.org/wiki/C... мирование)
Смотрите CreateFile, CloseHandle, ReadFile, WriteFile и т. д.
Их описания можно найти на сайте майкрософт.
1
2 / 2 / 0
Регистрация: 03.03.2013
Сообщений: 65
07.02.2014, 19:40  [ТС]
Вот такая конструкция должна работать?
Спрашиваю потому, что у меня не работает, но думаю что аудиофайл не правильного формата.
Visual Basic
1
2
3
4
5
6
7
8
9
Private Sub InitVoice()
    With MsComm1
    .Output = "AT+FCLASS=8" & vbCr 'Переход в Voice режим
    .Output = "AT+VSM=130,8000,0,0" & vbCr '130 - номер кодека, 8000 Hz
    .Output = "AT+VSD=128,50" & vbCr '128 и 50 
    .Output = "AT+VLS=1" & vbCr 'инит . . .
    .Output = "AT+VTX = c:\modem\test.wav" & vbCr 'где "c:\modem\test.wav" - это мой wave файлик.
    End With
  End Sub
Добавлено через 21 час 34 минуты
Как формировать пакеты по 320 байт для отправки их в com порт
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
07.02.2014, 19:54
Ты параметры WriteFile изучал или нет?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.02.2014, 19:54
Помогаю со студенческими работами здесь

Особенности работы с COM-портом
...доброго времени суток, уважаемые форумчане! Имеется программа-драйвер COM-порта (архив COM-порт.rar и общий вид приложены). Свои функции...

Библиотека работы с COM портом
Добрый день, нашел библиотеку для работы с ком портом. Вот: ...

Копиляция программы работы с COM портом
...доброго времени суток, уважаемые форумчане!... не могу понять, как &quot;победить&quot; эти ошибки (скрин-шот, а также проект - COM_1.rar...

C# класс для работы с COM-портом
подскажите, плз, где можно найти это чудо для .NET Framework 1.0. У MS нашел этот класс в 'C# 100 Samples', но он почему-то не...

Библиотека для работы с COM портом
Добрый вечер! Пишу программу, которая общается с внешним устройством, через СОМ порт. Я сделал библиотеку, которая прописывает функции...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru