Форум программистов, компьютерный форум, киберфорум
Наши страницы
PowerShell
Войти
Регистрация
Восстановить пароль
 
Postscripter
5 / 5 / 1
Регистрация: 04.07.2012
Сообщений: 159
#1

SafeWaitHandle - есть такая функция? Как её использовать? - PowerShell

09.06.2017, 09:58. Просмотров 242. Ответов 1
Метки нет (Все метки)

Приветствую!

Я с powershell пока "на вы", но знаю, что у неё много общего с си шарпом. Почти родня.

Вот есть программка на шарпе, "Image Grabber". Если её запускать из командной строки, она крашится, ругаясь на неверный дескриптор. Всё потому, что вызывающая программа, которая тоже на шарпе, предварительно взводит этот дескриптор. Ниже код, как она это делает, 11-я строчка.

Вопрос. Могу ли я взвести его сам, вызывая программу из powershell?

C#
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
ItemInfo itemInfo = (ItemInfo)item.Tag;
string videoPath = itemInfo.Path;
Options options = itemInfo.Options;
int tileCount = Int32.Parse(item.SubItems[0].Text);
AutoResetEvent activityEvent = new AutoResetEvent(false);
AutoResetEvent finishedEvent = new AutoResetEvent(false);
Process workProc = null;
 
options.SaveOptions(Path.Combine(Settings.SettingsDirectory, "OptionsBatch.grb"));
 
activityEvent.SafeWaitHandle = new SafeWaitHandle(NativeMethods.CreateEvent(
    IntPtr.Zero, false, false, "IGBatchActivity"), true);
finishedEvent.SafeWaitHandle = new SafeWaitHandle(NativeMethods.CreateEvent(
    IntPtr.Zero, false, false, "IGBatchFinished"), true);
 
try {
    workProc = Process.Start(Assembly.GetExecutingAssembly().Location,
        String.Format("-batch {0} "{1}"", tileCount, videoPath));
    int lastRespondTime = Environment.TickCount;
    bool finished = false;
 
    do {
        if (activityEvent.WaitOne(100, false)) {
            lastRespondTime = Environment.TickCount;
        }
    }
    while ((Environment.TickCount - lastRespondTime < timeout) &&
        !(finished = finishedEvent.WaitOne(100, false)));
 
    if (!finished) {
        workProc.Kill();
    }
}
catch { }
finally {
    if (workProc != null) {
        try {
            workProc.Dispose();
        }
        catch { }
    }
    activityEvent.Close();
    finishedEvent.Close();
}
 
Application.DoEvents();
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2017, 09:58
Я подобрал для вас темы с готовыми решениями и ответами на вопрос SafeWaitHandle - есть такая функция? Как её использовать? (PowerShell):

Есть такая функция в маткад как maxmod
Есть ли такая функция в маткад как maxmod

Как в строке большую букву найти? Есть ли такая функция или самому писать?
сабж

Есть ли функция такая?
к-рая каждую первую букву в слове переводила бы в верхний регистр???? Надо...

есть ли такая функция???
есть ли функция которая тип String а лучше AnsiString переводит в char???

Есть ли такая функция?
Есть два php-файла, в первом надо прочить в стоку html-код, который генерит...

Подскажите есть ли такая функция
Нужно преобразовать дату, например, в timeshtamp: дата в формате: Tue, 29...

1
Postscripter
5 / 5 / 1
Регистрация: 04.07.2012
Сообщений: 159
11.06.2017, 19:37  [ТС] #2
Всем спасибо)

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# Помещаем в переменную $Code код c#
$Code = @"
 using System;
 using System.Runtime.InteropServices;
 
namespace ImageGrabberII {
  public class Magic {
    [DllImport("kernel32.dll")]
    static extern IntPtr CreateEvent(IntPtr lpEventAttributes, bool bManualReset, bool bInitialState, string lpName);
    public static void DoMagic() { 
      CreateEvent(IntPtr.Zero, false, false, "IGBatchFinished"); 
      CreateEvent(IntPtr.Zero, false, false, "IGBatchActivity");
    }
  }
}
"@
 
# комилируем и выполняем
$cp = new-object Microsoft.CSharp.CSharpCodeProvider        
$cpar = New-Object System.CodeDom.Compiler.CompilerParameters
$cp.CompileAssemblyFromSource($cpar, $code)
[ImageGrabberII.Magic]::DoMagic()
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.06.2017, 19:37
Привет! Вот еще темы с решениями:

Есть ли такая функция расщепления?
есть наименование товара ZPAS WZ-2378-01-24-011 Открытая стойка 19&quot;, серия...

Есть ли такая встроенная функция
Подскажите, пожалуйста, существует ли в Oracle встроенная функция, которая...

Функция вычисления хэша сообщения, есть ли такая?
Мне надо вычислить хэш сообщения, неважно по какому алгоритму.

Триангуляция матрицы, есть такая функция в MathCAD?
Добрый день) Требуется выполнить триангуляцию матрицы(5*5). Делал вручную,...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru