169 похожих чатов

Господа и дамы, поможите пожалуйста :( Запускаю notepad.exe из делфи CreateProcess(nil, PChar(FullPath),

nil, nil, False, NORMAL_PRIORITY_CLASS, nil, nil, StartInfo, ProcessInfo)

В windows 10 - все ок
Запускаю в windows 8 - выскакивает ошибка 50: ERROR_NOT_SUPPORTED

Я так понимаю, дело в правах доступа, но не понимаю где это вообще настраивать. В делфи? в нотепаде? Вроде у него для всех пользователей стоит возможность запускать...

7 ответов

18 просмотров

Стикер

инициализацию последних двух параметров выполнил?

Ivan-Burnatov Автор вопроса
Александр (Rouse_) Багель
инициализацию последних двух параметров выполнил?

да, все в порядке, точно такой же код работает в win10

Ivan-Burnatov Автор вопроса

там все в порядке, точно такой же код работает в win10

Ivan-Burnatov Автор вопроса
Александр (Rouse_) Багель
покажи лучше полный код вызова

procedure RunDosApp(DosApp: string);var StartInfo: TStartupInfo; ProcessInfo: TProcessInformation; FullPath: string;begin FullPath := DosApp; // Укажите полный путь к исполняемому файлу if not FileExists(FullPath) then begin ShowMessage('Файл ' + FullPath + ' не найден'); Exit; end; FillChar(StartInfo, Sizeof(StartInfo), #0); StartInfo.cb := SizeOf(StartInfo); // Устанавливаем флаг, чтобы указать, что мы хотим использовать wShowWindow. StartInfo.dwFlags := STARTF_USESHOWWINDOW; StartInfo.wShowWindow := SW_SHOWNORMAL; // Инициализируем структуру ProcessInfo. ProcessInfo := Default(TProcessInformation); // Убедимся, что строка DosApp не является только для чтения. UniqueString(FullPath); if not CreateProcess(nil, PChar(FullPath), nil, nil, False, NORMAL_PRIORITY_CLASS, nil, nil, StartInfo, ProcessInfo) then begin ShowMessage('Ошибка: ' + IntToStr(GetLastError)); Exit; end; // Ждем завершения приложения WaitForSingleObject(ProcessInfo.hProcess, INFINITE); // Закрываем дескрипторы CloseHandle(ProcessInfo.hProcess); CloseHandle(ProcessInfo.hThread); end; RunDosApp('c:\windows\notepad.exe'); запускаю на win10 - все ок, на win8 - ошибка 50

Ivan Burnatov
procedure RunDosApp(DosApp: string);var StartI...

не верная инициализация у StartInfo размер не выставлен

Похожие вопросы

Обсуждают сегодня

Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
10
А дальше что?.. Записать в файл, потом в Код?.. И потом разбирать как-то?..
Хаскель Моисеевич Гопник
14
А чем вам питонисты не угодили?😂
.
79
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
48
type TObj = object procedure Init; virtual; end; TObj1 = object(TObj) procedure Init; override; end; procedure TObj1.Init; begin inherited; end; procedur...
Alexander 👋
29
@y0zhig @shizzard А можно я опишу цель и может вообще ерланг мне не подходит. На текущий момент как я понимаю у ерланга есть легковесные потоки и задача выполняется в каком т...
Дмитрий Спиридонов
5
Есть предложения, как подобное можно упростить?
Hemul GM
12
У меня вопросик назрел. Почему, создав класс без наследования и реализации деструктора Destroy, деструктор не вызывался при free. Потом указал наследование от tobject и overri...
Сергей Бычков
9
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
86
Такой вопросец - есть функция function MySuperDuperConcat(const a: array of AnsiString): AnsiString; Как мне в её теле сделать вот так? Result:=Concat(a); А не грустный вариан...
notme
15
Карта сайта