Newsgroup: it.comp.lang.delphi
Titolo: Azionare funzione in un programma esterno

Devo realizzare il seguente tool:
una barra degli strumenti contenente dei simboli e che, cliccando sui
bottoni, incolli in un programma esterno (che può essere Word, Ms
Paint, Paint Shop Pro, Excel, ecc) il simbolo associato al bottone.
Come posso fare perchè il mio programma, dopo aver caricato quanto
deve trasferire al programma esterno, automaticamente esegua anche
l'operazione 'incolla' senza ulteriore intervento da parte dell'utente
(n.b.: il programma 'esterno', può anche essere passato come opzione
di settaggio ed essere fisso, però in tal caso devo verificare anche
se è attivo)
Volevo cercare di 'inviare' messaggi, però non so come fare a
indirizzarli al programma 'bersaglio'.
Qualcuno può cortesemente aiutarmi con un esempio o con un
suggerimento ?
Grazie anticipatamente a tutti
Andrea

 ha scritto nel messaggio
news:b2fotsku8bav1jf3e...@4ax.com...


Con la clipboard funziona, ma il mio problema è un altro: voglio evitare che
l'utente debba scegliere "incolla" da programma base
Invece il mio programma deve essere in grado di:
1) caricare in memoria e poi nella clipboard un simbolo
2) far eseguire all'altro programma la procedura incolla (penso passandogli
un messaggio o qualcosa del genere)

 l'utente debba scegliere "incolla" da programma base
Se ho ben capito (ma non credo), il tuo problema è : carico il mio
programma, come faccio
a fargli eseguire *da solo* (senza intervento dell'utente) un'operazione che
di solito esegue l'utente
(ad esempio cliccando su un bottone) ?
Se è così è semplice : puoi usare un timer (ttimer), o gli eventi oncreate o
onactivate della form.
Se invece non ho capito un &£$%  ... riscrivi ! :)
Ciao, Davide DG

"Andrea":
| Con la clipboard funziona, ma il mio problema è un altro: voglio evitare
che
| l'utente debba scegliere "incolla" da programma base
| Invece il mio programma deve essere in grado di:
| 1) caricare in memoria e poi nella clipboard un simbolo
| 2) far eseguire all'altro programma la procedura incolla (penso
passandogli
| un messaggio o qualcosa del genere)
mi viene un'idea (sempre se ho capito),
passargli la combinazione di tasti CTRL-V (ovvero incolla)...
prova...
Ciao,
Alan Solo

 passargli la combinazione di tasti CTRL-V (ovvero incolla)...
ahhh.... non avevo capito allora !! ;-PP
Ciao, Davide DG


Mi puoi dare una spintarella..... come posso inviare una combinazione di
tasti dal mio programma ad un  programma esterno ?
Ci provo (in teoria, x' oggi non sono in grado di provare in pratica).....
Catturo l'handle del programma che mi serve e con sendmessage gli invio la
combinazione in un messaggio di tipo WM_KEYDOWN ?
O brancolo nel buio ?
Grazie ancora
Andrea

"Andrea":
| > mi viene un'idea (sempre se ho capito),
| > passargli la combinazione di tasti CTRL-V (ovvero incolla)...
| > prova...
|
| Mi puoi dare una spintarella..... come posso inviare una combinazione di
| tasti dal mio programma ad un  programma esterno ?
| Ci provo (in teoria, x' oggi non sono in grado di provare in pratica).....
| Catturo l'handle del programma che mi serve e con sendmessage gli invio la
| combinazione in un messaggio di tipo WM_KEYDOWN ?
| O brancolo nel buio ?
no, no, l'idea e' prorpio quella
... visto che sono buono ho provato e ho scoperto una soluzione migliore,
.... aspetta un attimo, vuoi vedere che c'e' anche il mesaggio WM_PASTE,
yes! :)
es con Notepad:
var h: THandle;
begin
 h:= FindWindow('notepad', nil);
 if h <> 0 then begin
  h:= GetWindow(h, GW_CHILD);
  if h <> 0
   then SendMessage(h, WM_PASTE, 0, 0);
  end;
end;
Ciao,
Alan Solo

Grazie, ma ho una brutta notizia....
hai provato con WM_PASTE su notepad, ma questo msg, come scritto anche nel
SDK, funziona solo con dati di tipo testo.
Grazie comunque
Andrea

| Grazie, ma ho una brutta notizia....
| hai provato con WM_PASTE su notepad, ma questo msg, come scritto anche nel
| SDK, funziona solo con dati di tipo testo.
gia', non l'avevo letto, sono semplicemente andato ad occhio! :)
allora ritornerei alla prima soluzione,
attivi la finestra che ti interessi e emuli CTRL+V (keybd_event)
(non penso che ci sia un metodo standard  e piu' pulito,
se c'e' fatemelo sapere! :))
cmq non e' deto che funzioni con tutte le apps..
Ciao,
Alan Solo