31 / 31 / 4
Регистрация: 23.03.2014
Сообщений: 180
1
.NET 4.x

AppCrash консольного приложения при чтении с него средствами vbs

17.08.2015, 18:32. Показов 720. Ответов 5
Метки нет (Все метки)

Доброго времени суток форумчане! есть маткад он использует vbs и есть консоль на vb.net вызывающая api функции другой проги

код консоли
Кликните здесь для просмотра всего текста

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Public swapp As SldWorks
Public SWID As Integer
...
While True
Dim apver As String = Console.ReadLine()
...
ElseIf ((apver = "swrun") And (Process.GetProcessesByName("SLDWORKS").Count = 0)) Then
                swapp = CreateObject("SldWorks.Application")
                swapp.Visible = True
                SWID = swapp.GetProcessID
                AppActivate(SWID)
                Console.WriteLine("run")
ElseIf ((apver = "swrun") And (Process.GetProcessesByName("SLDWORKS").Count <> 0)) Then
                swapp = System.Activator.CreateInstance(System.Type.GetTypeFromProgID("SldWorks.Application")); 
                SWID = swapp.GetProcessID
                AppActivate(SWID)
                Console.WriteLine("get")
ElseIf  ...
...
End While


и скрипт vbs
Кликните здесь для просмотра всего текста

Visual Basic
1
2
3
4
5
6
7
8
9
Dim WshExec
Dim strFromProc
 
Set WshShell = CreateObject("WScript.Shell")
Set WshExec = WshShell.Exec("%USERNAME%\Desktop\SolidWorksApi.exe")
 
    WshExec.StdIn.WriteLine ("swrun")
    strFromProc = WshExec.StdOut.ReadLine()
    WScript.Echo strFromProc


когда скрипт получает ответ то происходит аппкраш консоли подскажите плиз где ошибка?
спасибо.

Добавлено через 5 минут
если вписывать вручную аппкраш не происходит
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.08.2015, 18:32
Ответы с готовыми решениями:

Запуск консольного приложения и считывание с него текста
Приветствую всех читающих! У меня следующая ситуация: есть консольное приложение, которое я...

Разработка консольного приложения средствами DevC++. Формирование пользовательского текстового меню
на фото есть таблица с фамилиями... мне нужна работа Васильевой Анастасии, а конкретно написать...

Как остановить исполнение консольного приложения без выхода из него?
То есть, если пишу exit(1); , то консоль закрывается, но там есть информация о ошибке, которую...

Абракадабра при записи в файл и при чтении из него кириллицы
#include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; int main() { ofstream...

5
31 / 31 / 4
Регистрация: 23.03.2014
Сообщений: 180
19.08.2015, 15:43  [ТС] 2
вот пример консоли
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Module Module1
 
    Sub Main()
        While True
            Dim w As String = Console.ReadLine()
            Dim substr As String = LCase(w)
            Dim strnum As Integer = substr.Length
            If (w = "1") Then
                Console.WriteLine(w)
            ElseIf (strnum > 6) Then
                If ((substr.Substring(0, 6) = "111111") And (substr.Substring(6, 1) = "/")) Then
                    Console.WriteLine(substr.Substring(0, 6))
                ElseIf ((substr.Substring(0, 6) = "222222") And (substr.Substring(6, 1) = "/")) Then
                    Console.WriteLine(substr.Substring(0, 6))
                End If
            Else
                Console.WriteLine("22")
            End If
        End While
    End Sub
 
End Module

скрипт тот же при запуске скрипта
AppCrash консольного приложения при чтении с него средствами vbs
0
COM‐пропагандист
753 / 655 / 135
Регистрация: 18.12.2014
Сообщений: 1,821
Записей в блоге: 4
20.08.2015, 02:03 3
Всё просто.
Когда вбскрипт прекращает работу, то закрывается стандартный поток вывода. В этом случае функция Console.ReadLine() вернёт Nothing.
Чтобы избежать этого, необходимо возвращаемую строку проверить на пустоту, и только когда она не пуста, производить с ней действия.
VB.NET
1
2
3
4
Dim w As String = Console.ReadLine()
If Not String.IsNullOrEmpty(w) Then
    ' сделать что‐нибудь
End If
1
31 / 31 / 4
Регистрация: 23.03.2014
Сообщений: 180
20.08.2015, 10:55  [ТС] 4
Замабувараев спасибо за ответ! и subвопрос почему консоль после отработки скрипта не на что не реагирует?
VB.NET
1
2
3
4
5
6
Dim w As String = Console.ReadLine()
If Not String.IsNullOrEmpty(w) Then
    ' сделать что‐нибудь
Else
                Continue While
End If
0
COM‐пропагандист
753 / 655 / 135
Регистрация: 18.12.2014
Сообщений: 1,821
Записей в блоге: 4
21.08.2015, 06:37 5
Цитата Сообщение от hristofernando Посмотреть сообщение
почему консоль после отработки скрипта не на что не реагирует?
Потому что файловый поток, откуда консольная программа получала данные, закрылся при завершении скрипта. Функция Console.ReadLine() всегда будет возвращать Nothing.
Нужно завершать программу.
0
31 / 31 / 4
Регистрация: 23.03.2014
Сообщений: 180
21.08.2015, 14:24  [ТС] 6
Цитата Сообщение от Замабувараев Посмотреть сообщение
Нужно завершать программу
- этого и не хотел делать иначе закрыл бы ее в скрипте до получения Nothing.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.08.2015, 14:24
Помогаю со студенческими работами здесь

При чтении файла данные из него удаляются?
При чтении файла данные из него удаляются? Например память занимаемая ch освободится ...

Почему при чтении exe файла средствами python выводит ошибку?
Вот сам код: file = open(&quot;f.exe&quot;, &quot;r&quot;, encoding=&quot;cp1251&quot;) print(file.read()) (ничего сложного)...

Ошибка при создании консольного приложения
при создании консольного проекта на C# в 10 студии когда создал и пытаюсь открыть файл с кодом...

Ошибка при компиляции консольного приложения
Здравствуйте! Может быть мой вопрос глуп, но информация в интернете не помогла. Или не так искала....


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru