На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> Как запустить C:\Windows\System32\osk.exe x64 из под 32-битного приложения?
Пререпробывал всякого коду разног ничто не запускает C:\Windows\System32\osk.exe ,
из любой не системной директории пожалуйста а из системной низя.
Сообщение отредактировано: Jiro -
Выяснилось что для запуска C:\Windows\System32\osk.exe в win64 нужно иметь win64 приложение.
А как из под win32 приложения запустить 64-ную версию osk ?
Что значит "нельзя"? Заповеди запрещают, что ли?
Откуда "выяснилось"?
Как пробовал, какие коды ошибок возвращают функции?
Кто так вопросы задает, ты программер или бабка с базара? Чесслово, фейспалм
Codero ergo sum
// Программирую — значит, существую
Fr0sT
Я конечно же базарная бабка, но "нельзя" я не писал, это вы меня оклеветали :D
А выяснилось методом тыка.
Поскольку никаких ошибок не вылетало, я как-то не додумался посмотреть результат функции, гляну позже.

Формат вопроса такой примитивный, потому что расчёт на то что кто-то с таким сталкивался и знает что по чем.
Я вот к примеру не первый день семками на базаре торгую, но с проблемой запуска osk.exe(64bit) из под my.exe(32bit) сталкиваюсь первый раз.

Добавлено
Посмотрел, код ошибки ERROR_PATH_NOT_FOUND , хотя из под x64 тот же путь работает ...

Добавлено
если путь задавать как C:\Windows\WinSxS\amd64_microsoft-windows-osk_31bf3856ad364e35_10.0.17134.1_none_903d5fc3c319176b\osk.exe то запускается
если C:\Windows\system32\osk.exe то нет.


Но путь C:\Windows\WinSxS\amd64_microsoft-windows-osk_31bf3856ad364e35_10.0.17134.1_none_903d5fc3c319176b это скорее динамический путь чем статический,
а искать osk.exe по всему каталогу Windows как-то нехочется
Сообщение отредактировано: Jiro -
Цитата Jiro @
Я конечно же базарная бабка, но "нельзя" я не писал, это вы меня оклеветали

Цитата Jiro @
низя


Цитата Jiro @
Посмотрел, код ошибки ERROR_PATH_NOT_FOUND , хотя из под x64 тот же путь работает ...

На SysWOW напоролся? https://www.howtogeek.com/326509/whats-the-...ers-in-windows/ оно?
Codero ergo sum
// Программирую — значит, существую
Все просто, нужно отключить редирект на 32 битную папку
ExpandedWrap disabled
    Function Wow64DisableWow64FsRedirection(Var Wow64FsEnableRedirection: LongBool): LongBool; StdCall;
      External 'Kernel32.dll' Name 'Wow64DisableWow64FsRedirection';
     
    Var
      Wow64FsEnableRedirection: LongBool;
    begin
      if Wow64DisableWow64FsRedirection(Wow64FsEnableRedirection) then ShellExecute(0,nil, 'osk.exe', nil, nil, SW_show);
    end;


Добавлено
И да, невозможно запустить 32 битную osk версия из-за "Запрошенная операция требует повышения" т.е. ещё можно покапать в сторону UAC, возможно манифестом можно решить эту проблему. Только почему запускаются с пониженными правами непонянтно. Даже если запустить программно 32 битную cmd и там написать osk тоже будет ошибка, хотя та-же 32 битная cmd из проводника винды osk запускает
"Воля - это то, что заставляет тебя побеждать, когда твой рассудок говорит тебе, что ты повержен" Карлос Кастанеда
Цитата ^D^ima @
И да, невозможно запустить 32 битную osk версия из-за "Запрошенная операция требует повышения" т.е. ещё можно покапать в сторону UAC, возможно манифестом можно решить эту проблему. Только почему запускаются с пониженными правами непонянтно. Даже если запустить программно 32 битную cmd и там написать osk тоже будет ошибка, хотя та-же 32 битная cmd из проводника винды osk запускает

use ShellExecute Luke :)
user posted image
В русском языке есть слова, их там много.
Когда их составляешь вместе, получается предложение, где есть сказуемое, подлежащее и прочая светотень.
В нём переставь местоимение, сказуемое и подлежащее, и появится интонация!
Цитата Rouse_ @
use ShellExecute Luke

так с ней и не запускает :)
"Воля - это то, что заставляет тебя побеждать, когда твой рассудок говорит тебе, что ты повержен" Карлос Кастанеда
Нукась покаж код, у меня вроде как запускало.
user posted image
В русском языке есть слова, их там много.
Когда их составляешь вместе, получается предложение, где есть сказуемое, подлежащее и прочая светотень.
В нём переставь местоимение, сказуемое и подлежащее, и появится интонация!
Как в 7 постеshellexecute
"Воля - это то, что заставляет тебя побеждать, когда твой рассудок говорит тебе, что ты повержен" Карлос Кастанеда
Смотри
Прикреплённый файлПрикреплённый файлqweqwe.gif (1,36 Мбайт, скачиваний: 11)
user posted image
В русском языке есть слова, их там много.
Когда их составляешь вместе, получается предложение, где есть сказуемое, подлежащее и прочая светотень.
В нём переставь местоимение, сказуемое и подлежащее, и появится интонация!
Да емое, ты просто shell execute голый выполни в 32 битной дельфи
Сообщение отредактировано: ^D^ima -
"Воля - это то, что заставляет тебя побеждать, когда твой рассудок говорит тебе, что ты повержен" Карлос Кастанеда
Ааа, 32 битной винды у меня нет :)
А чистый ShellExecute без отключения перенаправления тоже сработал
Сообщение отредактировано: Rouse_ -
user posted image
В русском языке есть слова, их там много.
Когда их составляешь вместе, получается предложение, где есть сказуемое, подлежащее и прочая светотень.
В нём переставь местоимение, сказуемое и подлежащее, и появится интонация!
32 бмтной дельфи на 64 битной системе. В метро неудобно писать
"Воля - это то, что заставляет тебя побеждать, когда твой рассудок говорит тебе, что ты повержен" Карлос Кастанеда
Ну, я это и сделал, из 32 битной дельфи на 64 битной винде вот такой код все запускает :)

ExpandedWrap disabled
    program Project32;
     
    {$APPTYPE CONSOLE}
     
    {$R *.res}
     
    uses
      Windows,
      System.SysUtils,
      ShellAPI;
     
    var
      hRes: HINST;
    begin
      try
          hRes := ShellExecute(0,nil, 'osk.exe', nil, nil, SW_show);
          if hRes <= HINSTANCE_ERROR then
            RaiseLastOSError;
      except
        on E: Exception do
          Writeln(E.ClassName, ': ', E.Message);
      end;
      Readln;
    end.
user posted image
В русском языке есть слова, их там много.
Когда их составляешь вместе, получается предложение, где есть сказуемое, подлежащее и прочая светотень.
В нём переставь местоимение, сказуемое и подлежащее, и появится интонация!
1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
0 пользователей:


Рейтинг@Mail.ru
[ Script Execution time: 0,1519 ]   [ 22 queries used ]   [ Generated: 21.01.19, 16:54 GMT ]