Série da semana: Primeiros passos no Angular

Veja mais

drop windows 10

14/03/2019

10

Olá bom dia..

Estou aqui de novo precisando de ajuda...
Estou com o seguinte problema:

Com este código abaixo, Me possibilita arrastar do Explorer e adicionar em um ListBox.
Em delphi 10.3

uses
Winapi.ShellApi;

type
TMyform = class(TForm)
...
protected
procedure WMDropFiles(var Message: TWMDropFiles); message WM_DROPFILES;
...
end;

procedure TMyform.WMDropFiles(var Message: TWMDropFiles);
var
numfiles: integer;
buf: array[0..MAX_PATH] of char;
begin
numfiles := DragQueryFile(Message.Drop,$FFFFFFFF,nil,0);
if numfiles>0 then begin
Application.BringToFront;
// only open 1 file at a time
// - you could open more than 1 file
// at a time by looping thru numfiles
DragQueryFile(Message.Drop,0,buf,MAX_PATH);

{ call some method which opens the file
- buf gets automatically
typecast to a string if necessary }
ListBox1.Items.Add(buf);

DragFinish(Message.Drop); // clean up
end;
end;
no formCreatte
DragAcceptFiles(Handle, true);
e no formDestroy
DragAcceptFiles(Handle, false);



o problema se eu executar o aplicar como administrador, não adiciona no listbox, isso só acontece no windows 10 já no windows 7 ultimate funcionar tudo normal.

Será alguém aqui pode da uma ideia do que pode ser ?!

Obrigado pela atenção...
Responder

Posts

22/03/2019

Cgm2k7 2013

help - me
ajude-me
Responder
Olá Amigo,

Você precisa criar um arquivo de manifesto (XML) no formato necessário e compilar junto com a aplicação

Arquivo Mínimo

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
        <security>
            <requestedPrivileges>
                <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
            </requestedPrivileges>
        </security>
    </trustInfo>
</assembly>


Arquivo mais completo (opcional)
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestversion="1.0">
<assemblyIdentity version="1.1.1.1">
processorArchitecture="*"
name="GeoMonitor"
type="win32" />
<description>elevate execution level</description>
<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.v2"><security>
<requestedPrivileges>
<requestedExecutionlevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
</security>
</trustinfo>
</assembly>


se quiser mais detalhes sobre o xml acesse o site da microsoft:
https://docs.microsoft.com/en-us/windows/desktop/sbscs/manifests

Depois vá em Project -> Options, e dentro da sessão Application você encontrará as configurações de manifesto. Alí você pode selecionar o manifesto personalizado.

Espero ter ajudado, um forte abraço e fique com Deus.
Responder