API do Windows

Delphi

16/08/2005

Em um formulário usei o componente webBrowser para navegar na web, quando eu pressiono as teclas ctrl+P chamo a janela de impressão do windows. Como faço para chamar essa tela através de um menu?
Gostaria de usar tbm a função copiar e colar do windows através de uma procedure. Alguém sabe como faço?
Valeu,
Cássio


Cassioflima

Cassioflima

Curtidas 0

Respostas

Adriano Santos

Adriano Santos

16/08/2005

Ué cara, não entendi.
Se conseguiu colocar um CTRL+P para chamar a janela (que por entre aspas seria até mais difícil) por que não consegue colocar no Menu?
Coloque a função que chama a impressão em um item de menu, vá nas propriedades deste item e olhe a propriedade ShortCut. Configure-a com o atalho que você quer CTRL+P, acabou o problema.

Quanto a copiar, o que exatamente quer copiar? Texto? Arquivo?


GOSTEI 0
Cassioflima

Cassioflima

16/08/2005

as teclas ctrl+P funcionam como atalho para impressão do windows, sem que eu precise programar nada, isso vem de herança do windows, o que eu não consigo é fazer com que isso funcione através de programação delphi, como manipular a api do windows, entedeu?


GOSTEI 0
Adriano Santos

Adriano Santos

16/08/2005

Ahhhh, agora entendi. O CTRL + P já é herdado por default no componente TWebBrowser né? É verdade, pensei que você tivesse programado isso em algum local do seu sistema, desculpe.

Bom, neste caso você pode usar o seguinte:

procedure TfPrincipal.Button2Click(Sender: TObject);
var
  vaIn, vaOut: OleVariant;
begin
  WebBrowser1.ControlInterface.ExecWB(OLECMDID_PAGESETUP, OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut);
  //OLECMDID_OPEN
  //OLECMDID_NEW
  //OLECMDID_SAVE
  //OLECMDID_SAVEAS
  //OLECMDID_SAVECOPYAS
  //OLECMDID_PRINT
  //OLECMDID_PRINTPREVIEW
  //OLECMDID_PAGESETUP
  //OLECMDID_SPELL
  //OLECMDID_PROPERTIES
end;


Abra a unit SHDocVw e veja estas constantes. Tem várias lá, da prá fazer a festa. :lol:


GOSTEI 0
Cassioflima

Cassioflima

16/08/2005

excelente ajuda!!! e aproveitando seus conhecimentos, se eu quiser fazer outra coisa por exemplo: fazer com que novas páginas que são abertas exemplos pop-up serem abertos no meu browser, no mesmo esquema porexemplo do iexplorer, vc sabe como?
valeu :)


GOSTEI 0
Adriano Santos

Adriano Santos

16/08/2005

Cara, preciso dar uma olhada, mas adiantando acredito que você possa registrar no Windows (regedit) como browser padrão, assim como faz outros browsers que você instala no computador.

Ex.: Quando você instala o FireFox e abre ele a primeira vez, ele te pergunta se você que ele seja o ´visualizador´ padrão de páginas. Se responder sim ele registra no Regedit do Windows e ai só alegria. Provavelmente terá que fazer isso, só é necessário descobrir qual chave é usada para isso no Regedit.


GOSTEI 0
Adriano Santos

Adriano Santos

16/08/2005

Consegui cara:

É bem fácil de fazer.

//Firefox
MudarBrowserPadrao(´C:\ARQUIV~1\MOZILL~1\FIREFOX.EXE -url "¬1"´);

//Internet Explorer
MudarBrowserPadrao(´C:\Arquivos de programas\Internet Explorer\IEXPLORE.EXE -nohome´);

//Seu browser
MudarBrowserPadrao(ParamStr(0));


Função que muda o browser padrão

procedure MudarBrowserPadrao(APath: String);
begin
  Ini := TRegistry.Create;
  Ini.RootKey := HKEY_CLASSES_ROOT;
  Ini.OpenKey(´HTTP\SHELL\OPEN\COMMAND´, False);
  Ini.WriteString(´´,APath);
  Ini.Free;
end;



Só é necessário programar direitinho o seu browser para funcionar abrindo as páginas com recebimento de parâmetros, e já era.


GOSTEI 0
Cassioflima

Cassioflima

16/08/2005

Fiz o que vc disse, declarando a variável Ini do tipo Tregistry e tbm declarando Registry em uses. Tbm deixei o browser recebendo parametro, mas quando é aberto um novo pop-up continua sendo aberto pelo iexplorer.


GOSTEI 0
Adriano Santos

Adriano Santos

16/08/2005

O que ocorre?
Quando vc abre uma página pelo seu browser que tem pop-up ele abre o pop-up no IE?


GOSTEI 0
Cassioflima

Cassioflima

16/08/2005

isso mesmo. Acessei o Regedit e em todos os lugares que estava sendo chamado o iexplorer.exe alterei para browser.exe mas mesmo assim ficou o iexplorer.


GOSTEI 0
Adriano Santos

Adriano Santos

16/08/2005

Esse prog é grande?
Quer mandar pra mim?
Só olhando agora, pq eu já esgotei meus conhecimentos em cima do caso.


GOSTEI 0
Cassioflima

Cassioflima

16/08/2005

qual o seu email?


GOSTEI 0
POSTAR