Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Регистрация приложения в службе StillImage

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

Mike1978

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Операционка – Windows XP SP3
Среда – Delphi 2010
 
Сделал интерфейс:
 

Код:
unit StillImage;
 
interface
 
uses
  Windows;
 
 
const
  STI_VERSION = $00000002;
   
type
  IStillImageW = interface(IUnknown)
    ['{641BD880-2DC8-11D0-90EA-00AA0060F86C}']
    .......
      function RegisterLaunchApplication(AppName, CommandLine: LPWSTR): HRESULT; stdcall;
    .......
  end;
 
  PIStillImageW = ^IStillImageW;
 
 
function StiCreateInstanceW(hinst: HINST; dwVer: DWORD; ppSti: PIStillImageW; punkOuter: IUnknown): HResult; stdcall; external 'sti.dll' name 'StiCreateInstanceW';
 
implementation
end.

 
 
Вызываю:
 
 

Код:
var
  Still_Image: IStillImageW;
  H_Res: HResult;
  pwszAppName: PWideChar;
  pwszCommandLine: PWideChar;
  wszAppName: array[0..1000] of WideChar;
  wszCommandLine: array[0..1000] of WideChar;
  ........
 
begin
  ........
  H_Res := StiCreateInstanceW(GetModuleHandle(nil), STI_VERSION, @Still_Image, nil);
  if H_Res <> S_OK then raise ...............
 
 
  FillChar(wszAppName, SizeOf(wszAppName), 0);
  FillChar(wszCommandLine, SizeOf(wszCommandLine), 0);
 
  pwszAppName     := StringToWideChar('Calculator', @wszAppName, SizeOf(wszAppName)-1);
  pwszCommandLine := StringToWideChar('c:\WINDOWS\system32\calc.exe', @wszCommandLine, SizeOf(wszCommandLine)-1);
 
  H_Res := 0;
  H_Res := Still_Image.RegisterLaunchApplication(pwszAppName, pwszCommandLine);
  if H_Res <> S_OK then raise ...............
  ...............
  ...............

 
 
И здесь получаю:
H_Res = 0x80070057
Это значит: E_INVALIDARG (One or more arguments are invalid)
Или: STIERR_INVALID_PARAM
 
 
Делал все точно как написано здесь:
http://msdn.microsoft.com/en-us/library/windows/desktop/cc836550%28v=vs.85%29.aspx
http://msdn.microsoft.com/en-us/library/windows/hardware/ff543798%28v=vs.85%29.aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/cc836552%28v=vs.85%29.aspx
 
Пробовал такие строки:

Код:
'c:\WINDOWS\system32\calc.exe'
'"c:\WINDOWS\system32\calc.exe"'
'\"c:\WINDOWS\system32\calc.exe\"'
'c:\\WINDOWS\\system32\\calc.exe'
'\"c:\\WINDOWS\\system32\\calc.exe\"'

 
Без разницы – всегда выдает ошибку E_INVALIDARG/ STIERR_INVALID_PARAM
 

Всего записей: 76 | Зарегистр. 02-09-2003 | Отправлено: 08:43 11-11-2013
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Регистрация приложения в службе StillImage


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru