Browsed by
分类:Delphi

delphi xe8 编写支持UAC的程序无须右键 [使用管理员运行]

delphi xe8 编写支持UAC的程序无须右键 [使用管理员运行]

在windows 7等以上操作系统中,如果我们的程序需要右键 [使用管理员运行]

每次都会很麻烦,如何让程序在运行时自动弹出UAC的窗口,就很人性化,在DELPHI中我们要如何做

在DELPHI XE的安装目前录下找到default_app.manifest

拷贝出来,修改

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
        type="win32"
        name="Microsoft.Windows.Common-Controls"
        version="6.0.0.0"
        publicKeyToken="6595b64144ccf1df"
        language="*"
        processorArchitecture="*"/>
    </dependentAssembly>
  </dependency>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="asInvoker"
          uiAccess="false"/>
        </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>

修改

level=”requireAdministrator”

然后在程序的属性里,找到application 修改Runtime Themes 使用Use coustom manifest为刚才修改好的文件

QQ Photo20150715110403

Delphi XE8下ANDROID按下返回键HardwareBack使用MessageDlg的问题

Delphi XE8下ANDROID按下返回键HardwareBack使用MessageDlg的问题

DELPHI XE8下,由于MessageDlg没有返回值,造成我们在捕获Android的返回键HardwareBack 上造成困难
这里使用了MainActivity.finish,Form的Close过程执行不到,所以要把Close做的工作,放在里面重做一次

uses  FMX.Platform.Android;
procedure TFrm_Main.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
  Shift: TShiftState);
begin
 {$IFDEF ANDROID}
  if Key = vkHardwareBack then
  begin
  //这里处理back键的代码

  MessageDlg('是否退出?',
    System.UITypes.TMsgDlgType.mtConfirmation,
    [System.UITypes.TMsgDlgBtn.mbOK, System.UITypes.TMsgDlgBtn.mbCancel],
    0,
     procedure(const AResult: TModalResult)
     Begin
     if AResult = mrok then
     Begin
//这里要把Close的操作再做一次
      MainActivity.finish;
     End;
     End
     );

  Key := 0;//处理完后清0.
  end;
  {$ENDIF}

end;