Могу ли я динамически приостановить/возобновить приложение (процесс Java) с помощью VBA?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Могу ли я динамически приостановить/возобновить приложение (процесс Java) с помощью VBA?

Сообщение Anonymous »

У меня есть лист Excel с несколькими столбцами данных. Данные первого столбца заполняются пользователями, сканируя NFC-тег, содержимое (MemberId) копируется в активную ячейку с помощью внешнего коммерческого инструмента, который считывает данные со считывателя NFC (ACR122u-A9) и помещает их в активная ячейка. Однако при вводе данных в другие столбцы (сотрудник отдела добавляет данные, связанные с уже отсканированным кодом NFC), я хочу временно заблокировать ввод NFC, чтобы предотвратить появление отсканированных данных в других столбцах.
Я реализовал это с помощью события Excel ProcessSelectionChange: находясь в первом столбце, запустите внешнее приложение с помощью подпрограммы Exec_TaskStartByName (см. ниже), а при переключении на другой столбец завершите его с помощью подпрограммы Exec_TaskKillByName.
Я заметил, что внешняя программа запускает структуру JAVA (представление TaskManagement), поэтому уничтожение приложения фактически означает завершение процесса Java.exe.
Таким образом, вышеописанное работает, но перезапуск приложение каждый раз занимает слишком много времени, что приводит к «мертвому времени» (инструмент еще не готов). Вместо того, чтобы каждый раз убивать/перезапускать приложение, мне интересно, можно ли приостановить запущенный процесс (выполнение временной остановки) и возобновить его, когда он вернется в первый столбец. Ожидается, что приостановка/возобновление займет меньше времени, чем уничтожение/запуск.
  • Если нет, то есть ли более быстрые способы запуска внешней программы, кроме моего (см. код ниже)?
Я заметил, что если я сначала не выполню ChDir в процедуре Exec_TaskStartByName, приложение не запустится.

Код: Выделить всё

Function Exec_TaskStartByName( _
ByVal argFilePath As String, _
ByVal argFileName As String, _
ByRef argTaskId As Long)

'First switch to the appropriate directory before starting the command
ChDir (argFilePath)
argTaskId = Shell(argFilePath & argFileName, vbMinimizedFocus)

Exec_TaskStartByName = (argTaskId > 0)

End Function

Function Exec_TaskKillByName( _
ByVal argFileName as string)

Dim oServ As Object
Dim cProc As Variant
Dim oProc As Object

Set oServ = GetObject("winmgmts:")
Set cProc = oServ.ExecQuery("Select * from Win32_Process")

For Each oProc In cProc
If (oProc.Name = argFileName) Then
Exec_TaskKillByName = oProc.Terminate
Exit For
End If
Next
End Function
См. описание, запуск/завершение приложения с помощью предоставленного кода работает, но запуск занимает слишком много времени


Подробнее здесь: https://stackoverflow.com/questions/788 ... -using-vba
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»