Autor Téma: zvýšená oprávnění Win8 a volaní osk.exe.  (Přečteno 702 krát)

Offline bohdan

  • Mladík
  • **
  • Příspěvků: 59
  • Karma: 2
zvýšená oprávnění Win8 a volaní osk.exe.
« kdy: 10-10-2013, 13:06:31 »
Ahoj,
nechápu proč mi win8 nechtějí pustit úlohu osk.exe (virtuální klávesnice).Pokud nastavím kompatibilitu na Win7, tak na žádné zvýšení oprávnění nekřičí a osk se z mojí aplikace normálně spustí.
V delphi mám přibližně následující kód

Kód: Delphi [Vybrat]
  1. var
  2.   is64Bit : boolean;
  3.   s:string;
  4. begin
  5.   is64Bit := IsWindows64;
  6.   if (is64Bit = true) then
  7.     ChangeFSRedirection(true); // Redirect stoppen
  8.   s :='%windir%\system32\osk.exe';
  9. if Pos('%WINDIR%',uppercase(s))>0 then
  10.  s:=stringreplace(S,'%windir%',getwindir,[rfIgnoreCase,rfReplaceAll]);
  11.  
  12.   _ExecProgP('',s,'','',FProcessInfoKeyb);
  13.  
  14.   if (is64Bit = true) then
  15.     ChangeFSRedirection(false); // Redirect wieder starten
  16. end;
  17.  
  18.  
  19. procedure _ExecProgP(Cesta, SParametry, SHlaska:string;AktualniAdresar:string;var ProcessInfo: TProcessInformation);
  20. var
  21.     StartupInfo: TStartupInfo;
  22.     CestaP,AktualniAdresarP:PChar;
  23.     E:Integer;
  24. begin
  25. if (FileExists(cesta)) or (Cesta = '') then
  26. begin
  27. if Cesta = '' then
  28.  CestaP := nil else
  29.  CestaP := PChar(Cesta);
  30. if AktualniAdresar = '' then
  31.  AktualniAdresarP := nil else
  32.  AktualniAdresarP := PChar(AktualniAdresar);
  33.  
  34. with StartupInfo do
  35. begin
  36. cb:=sizeof(StartupInfo);
  37. lpReserved:=nil;
  38. lpDesktop:=nil;
  39. lpTitle:=nil;
  40. dwX:=0; dwY:=0;
  41. dwFlags:=STARTF_USESTDHANDLES;
  42. wShowWindow:=SW_SHOWDEFAULT;
  43. cbReserved2:=0;
  44. lpReserved2:=nil;
  45. end;
  46. if not (CreateProcess(CestaP,PChar(SParametry),nil,nil,false,CREATE_NEW_CONSOLE{CREATE_SEPARATE_WOW_VDM},nil,AktualniAdresarP, StartupInfo, ProcessInfo)) then
  47.  begin
  48.  E :=GetLastError();
  49.  MessageDlg('Nelze vytvo°it proces ('+Cesta+' '+SParametry+') -  Error code '+#13#10+
  50.                    SysErrorMessage(E),
  51.                 mtError, [mbOk], 0);
  52.  
  53.  end;
  54. end;
  55. end;
  56.  


Pokud to pustím jako správce je vše OK.