Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Renault Twingo E-Tech Electric: che prezzo!
Renault Twingo E-Tech Electric: che prezzo!
Renault annuncia la nuova vettura compatta del segmento A, che strizza l'occhio alla tradizione del modello abbinandovi una motorizzazione completamente elettrica e caratteristiche ideali per i tragitti urbani. Renault Twingo E-Tech Electric punta su abitabilità, per una lunghezza di meno di 3,8 metri, abbinata a un prezzo di lancio senza incentivi di 20.000€
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media
Nel Formula 1 Technology and Media Centre di Biggin Hill, la velocità delle monoposto si trasforma in dati, immagini e decisioni in tempo reale grazie all’infrastruttura Lenovo che gestisce centinaia di terabyte ogni weekend di gara e collega 820 milioni di spettatori nel mondo
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica
Il nuovo gimbal mobile DJI evolve il concetto di tracciamento automatico con tre modalità diverse, un modulo multifunzionale con illuminazione integrata e controlli gestuali avanzati. Nel gimbal è anche presente un'asta telescopica da 215 mm con treppiede integrato, per un prodotto completo per content creator di ogni livello
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 11-12-2006, 15:55   #1
TonyManero
Senior Member
 
L'Avatar di TonyManero
 
Iscritto dal: Apr 2000
Città: Versilia
Messaggi: 569
Aprire finestra in un determinato punto...

Salve a tutti!

C'è un modo per aprire una finestra (di solito uso ShellExecute) in una posizione ben definita del desktop? Per esempio al pixel 100 - 100 ?



In particolare ho un desktop esteso su due moitor e volevo fare un eseguibile che aprisse una finestra di explorer sul primo ed una sul secondo!!!

Idee?
TonyManero è offline   Rispondi citando il messaggio o parte di esso
Old 11-12-2006, 18:12   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da TonyManero
C'è un modo per aprire una finestra (di solito uso ShellExecute) in una posizione ben definita del desktop? Per esempio al pixel 100 - 100 ?
No, è l'applicazione che stabilisce se/dove/come aprire eventuali finestre. Dalla ShellExecute puoi specificare soltanto il parametro nShowCmd, che però l'applicazione può spudoratamente ignorare (vedi Firefox ).

A parte barbatrucchi vari (es. lanciare il programma e andare a cercare le sue finestre e posizionarle), si potrebbe fare se fosse l'applicazione ad accettare dei parametri che permettano di indicare dove posizionare la/e finestre.

Tralasciando ShellExecute, si potrebbe usare CreateProcess. La struttura STARTUPINFO ha i campi dwX/dwY/dwXSize/dwYSize, però si presuppone che l'applicazione faccia poi una GetStartupInfo per ottenere quei dati (e potrebbe anche non farlo).
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2006, 08:10   #3
TonyManero
Senior Member
 
L'Avatar di TonyManero
 
Iscritto dal: Apr 2000
Città: Versilia
Messaggi: 569
Quote:
Originariamente inviato da andbin
No, è l'applicazione che stabilisce se/dove/come aprire eventuali finestre. Dalla ShellExecute puoi specificare soltanto il parametro nShowCmd, che però l'applicazione può spudoratamente ignorare (vedi Firefox ).

A parte barbatrucchi vari (es. lanciare il programma e andare a cercare le sue finestre e posizionarle), si potrebbe fare se fosse l'applicazione ad accettare dei parametri che permettano di indicare dove posizionare la/e finestre.

Tralasciando ShellExecute, si potrebbe usare CreateProcess. La struttura STARTUPINFO ha i campi dwX/dwY/dwXSize/dwYSize, però si presuppone che l'applicazione faccia poi una GetStartupInfo per ottenere quei dati (e potrebbe anche non farlo).
Uhmm... navinganzo in rete mi sembra di aver capito che la cosa più semplice è aprire la finestra e spostarla in seguito.... consgiliato di usare la SetWindowPos.... potrebbe essere la soluzione ottimale?
TonyManero è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2006, 09:35   #4
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da TonyManero
Uhmm... navinganzo in rete mi sembra di aver capito che la cosa più semplice è aprire la finestra e spostarla in seguito.... consgiliato di usare la SetWindowPos.... potrebbe essere la soluzione ottimale?
Certo, SetWindowPos va sicuramente bene, però ha bisogno di un handle HWND che devi cercare/ottenere in qualche modo. Potresti usare FindWindow per cercare una finestra in base al nome della classe e/o titolo della finestra. Se sai questi dati (e sono univoci), non dovresti avere problemi. Altrimenti ti tocca enumerare tutte le finestre top-level e cercare la/e finestre che appartengono al processo lanciato.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2006, 11:08   #5
TonyManero
Senior Member
 
L'Avatar di TonyManero
 
Iscritto dal: Apr 2000
Città: Versilia
Messaggi: 569
Quote:
Originariamente inviato da andbin
Certo, SetWindowPos va sicuramente bene, però ha bisogno di un handle HWND che devi cercare/ottenere in qualche modo. Potresti usare FindWindow per cercare una finestra in base al nome della classe e/o titolo della finestra. Se sai questi dati (e sono univoci), non dovresti avere problemi. Altrimenti ti tocca enumerare tutte le finestre top-level e cercare la/e finestre che appartengono al processo lanciato.
In effetti è prorpio così che ho deciso di procedere... ovvere FindWindow per recuperare l'Handle seguita da una SetWindowPos...

L'unica cosa è che a vedere in giro sembra che se ci sono più finestre di explorer aperte non sia proprio banalissimo trovare l'Handle a quella giusta! Consigli?
TonyManero è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2006, 11:21   #6
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da TonyManero
In effetti è prorpio così che ho deciso di procedere... ovvere FindWindow per recuperare l'Handle seguita da una SetWindowPos...

L'unica cosa è che a vedere in giro sembra che se ci sono più finestre di explorer aperte non sia proprio banalissimo trovare l'Handle a quella giusta! Consigli?
Le finestre tipo "Risorse del computer" hanno classe "CabinetWClass" mentre quelle di "Esplora risorse" hanno classe "ExploreWClass".
Poi se sono aperte su un percorso fisico, sul titolo della finestra c'è il path completo (dipende però da come è configurato nelle "Opzioni cartella").
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 03-01-2007, 08:23   #7
TonyManero
Senior Member
 
L'Avatar di TonyManero
 
Iscritto dal: Apr 2000
Città: Versilia
Messaggi: 569
Quote:
Originariamente inviato da andbin
Le finestre tipo "Risorse del computer" hanno classe "CabinetWClass" mentre quelle di "Esplora risorse" hanno classe "ExploreWClass".
Poi se sono aperte su un percorso fisico, sul titolo della finestra c'è il path completo (dipende però da come è configurato nelle "Opzioni cartella").
Domanda... penso non banale....

Tutto l'ambaradan di cui sopra mi serve per aprire su un PC remoto una finestra internet... per la precisione il PC remoto gestisce 4 monitor.

Comunque per adesso è tutto ok.... creo la finestra di explorer sul PC remoto nel punto desiderato del desktop "espanso".

Ora però è un problema.... il sito che deve essere visualizzato è un sito con frames. Quaindi a quasiasi pagina accedo l'indirizzo che vedo è sempre www.pippo.it. Come facci ad indicargli di aprire una particolare pagina del sito (non un singolo frame)?!

TonyManero è offline   Rispondi citando il messaggio o parte di esso
Old 03-01-2007, 09:07   #8
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da andbin
No, è l'applicazione che stabilisce se/dove/come aprire eventuali finestre.
EVVAI !!!! Stavolta vince Unix!!!

Codice:
shelltool -Wp <x> <y>
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 03-01-2007, 16:20   #9
TonyManero
Senior Member
 
L'Avatar di TonyManero
 
Iscritto dal: Apr 2000
Città: Versilia
Messaggi: 569
Ultima domanda e poi smetto di scroccare...

Ma come diavolo si può chiudere una finestra di internet explorer di cui sò il nome??????
TonyManero è offline   Rispondi citando il messaggio o parte di esso
Old 03-01-2007, 16:33   #10
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da TonyManero
Ma come diavolo si può chiudere una finestra di internet explorer di cui sò il nome??????
Cioè sai il titolo???
Prova con FindWindow (per trovare l'handle) e poi invia il messaggio WM_CLOSE.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 03-01-2007, 16:49   #11
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
arivince UNIX
Codice:
kill -9 `ps -edaf | grep -w <nome> | grep -v grep | awk '{print $2}'`
scherzo ovviamente ma lasciatemi sognare
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 11-01-2007, 08:58   #12
TonyManero
Senior Member
 
L'Avatar di TonyManero
 
Iscritto dal: Apr 2000
Città: Versilia
Messaggi: 569
Quote:
Originariamente inviato da andbin
Cioè sai il titolo???
Prova con FindWindow (per trovare l'handle) e poi invia il messaggio WM_CLOSE.
La finestra di explorer viene creata da questa riga:

Codice:
 
<SCRIPT language="JavaScript" type="text/javascript">
<!--
weblink=window.open("http://www.google.it","NomePagina","width=640,height=480,left=200,top=200");
//  -->
</SCRIPT>
Quiandi penso che il nome della finestra sia "NomePagina".

Ho molta difficoltà a trovare esempi di utilizzo dellla FindWindow... sai dove posso cercarli?

Grazie!
TonyManero è offline   Rispondi citando il messaggio o parte di esso
Old 11-01-2007, 09:28   #13
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da TonyManero
La finestra di explorer viene creata da questa riga:

Codice:
 
<SCRIPT language="JavaScript" type="text/javascript">
<!--
weblink=window.open("http://www.google.it","NomePagina","width=640,height=480,left=200,top=200");
//  -->
</SCRIPT>
Quiandi penso che il nome della finestra sia "NomePagina".
No, "NomePagina" è solo un nome interno che serve come riferimento quando si usano i tag <form> e <a> con l'attributo TARGET.
Non è quindi il titolo della finestra. Se apri google, il titolo su IE sarà "Google - Microsoft Internet Explorer".

Quote:
Originariamente inviato da TonyManero
Ho molta difficoltà a trovare esempi di utilizzo dellla FindWindow... sai dove posso cercarli?
Ecco un esempio:
Codice:
HWND hWndIE;

hWndIE = FindWindow ("IEFrame", "Google - Microsoft Internet Explorer");

if (hWndIE != NULL)
{
    ....
}
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 11-01-2007, 14:43   #14
TonyManero
Senior Member
 
L'Avatar di TonyManero
 
Iscritto dal: Apr 2000
Città: Versilia
Messaggi: 569
Quote:
Originariamente inviato da andbin
No, "NomePagina" è solo un nome interno che serve come riferimento quando si usano i tag <form> e <a> con l'attributo TARGET.
Non è quindi il titolo della finestra. Se apri google, il titolo su IE sarà "Google - Microsoft Internet Explorer".

Ecco un esempio:
Codice:
HWND hWndIE;

hWndIE = FindWindow ("IEFrame", "Google - Microsoft Internet Explorer");

if (hWndIE != NULL)
{
    ....
}
Grazie grazie!!!! Il programma finalmente procede...

Altra domanda... Ma creando la finestra con la CreateProcess mi ritorna l'Handle? Qual'è il modo più semplice di creare una finestra di internet explorer avendone l'handler e non dovendolo ricercare in seguito?

Ultima modifica di TonyManero : 11-01-2007 alle 15:27.
TonyManero è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2007, 10:53   #15
TonyManero
Senior Member
 
L'Avatar di TonyManero
 
Iscritto dal: Apr 2000
Città: Versilia
Messaggi: 569
Quote:
Originariamente inviato da andbin
No, "NomePagina" è solo un nome interno che serve come riferimento quando si usano i tag <form> e <a> con l'attributo TARGET.
Non è quindi il titolo della finestra. Se apri google, il titolo su IE sarà "Google - Microsoft Internet Explorer".
Domanda... se ho 2 finestre aperte della classe IEFrame... e sono una nella posizione 100x100 e l'altra in 200x200... come faccio a trovare l'handle di una o dell'altra se non so quale delle due è in primo piano e non ho altri dati?

Pensavo di trovare l'handle di una e vedere se era nella posizione che mi interessava... e così via. Il problema è che FindWindow mi ritorna l'handle sempre della stessa... che sarebbe quella delle due che è in primo piano rispetto all'altra. Qaundo vedo che non è quella che mi interessa ci vorrebbe un modo per toglierla dal top-level... in modo che rilanciando la mia funzione vado a beccare un'altra finestra e così via finchè non trovo la mia...

Ultima modifica di TonyManero : 24-01-2007 alle 12:00.
TonyManero è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2007, 14:12   #16
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da TonyManero
Domanda... se ho 2 finestre aperte della classe IEFrame... e sono una nella posizione 100x100 e l'altra in 200x200... come faccio a trovare l'handle di una o dell'altra se non so quale delle due è in primo piano e non ho altri dati?

Pensavo di trovare l'handle di una e vedere se era nella posizione che mi interessava... e così via. Il problema è che FindWindow mi ritorna l'handle sempre della stessa... che sarebbe quella delle due che è in primo piano rispetto all'altra. Qaundo vedo che non è quella che mi interessa ci vorrebbe un modo per toglierla dal top-level... in modo che rilanciando la mia funzione vado a beccare un'altra finestra e così via finchè non trovo la mia...
Devi usare la funzione EnumWindows. Questa funzione enumera tutte le finestre top-level. Per ogni handle ottenuto, vai a vedere la classe della finestra e se è "IEFrame" hai trovato una finestra di IE.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2007, 14:50   #17
TonyManero
Senior Member
 
L'Avatar di TonyManero
 
Iscritto dal: Apr 2000
Città: Versilia
Messaggi: 569
Quote:
Originariamente inviato da andbin
Devi usare la funzione EnumWindows. Questa funzione enumera tutte le finestre top-level. Per ogni handle ottenuto, vai a vedere la classe della finestra e se è "IEFrame" hai trovato una finestra di IE.
Azz.... lo sapevo che me l'avresti detto....


E' possibile che per risolvere 'sto programma ogni API nuova con cui mi trovo a che fare se ne porta dietro un'altra???

La EnumWindows l'ho vista ma mi riporta ad una misteriosa funzione "callback" di cui non capisco la funzione... mi dai un aiuto o mi posti un esempio semplice?

Ti ringrazio infinitamente!
TonyManero è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2007, 15:00   #18
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da TonyManero
La EnumWindows l'ho vista ma mi riporta ad una misteriosa funzione "callback" di cui non capisco la funzione... mi dai un aiuto o mi posti un esempio semplice?
Ecco:
Codice:
BOOL CALLBACK ProcEnumeraFinestre (HWND hWnd, LPARAM lParam)
{
    CHAR szClasse[128];

    if (GetClassName (hWnd, szClasse, sizeof (szClasse)) > 0)
    {
        if (lstrcmp (szClasse, "IEFrame") == 0)
        {
            // ... hai trovato una finestra di IE ...
        }
    }

    return TRUE;
}


...

EnumWindows (ProcEnumeraFinestre, 0L);
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2007, 16:04   #19
TonyManero
Senior Member
 
L'Avatar di TonyManero
 
Iscritto dal: Apr 2000
Città: Versilia
Messaggi: 569
Capperi... mi dice:

[C++Error] Unit1.cpp(295): E2034 Cannot convert 'bool(__stdcall*)(void*,long)' to 'int(__stdcall*)()'.
[C++Error] Unit1.cpp(295): E2343 Type mismatch in parameter 'IpEnumFunc' in call to '__stdcall EnumWindows(int(__stdcall*)(),long)'.

Ti viene in mente cosa possa essere?
TonyManero è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2007, 16:26   #20
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da TonyManero
Capperi... mi dice:

[C++Error] Unit1.cpp(295): E2034 Cannot convert 'bool(__stdcall*)(void*,long)' to 'int(__stdcall*)()'.
[C++Error] Unit1.cpp(295): E2343 Type mismatch in parameter 'IpEnumFunc' in call to '__stdcall EnumWindows(int(__stdcall*)(),long)'.

Ti viene in mente cosa possa essere?
Mi viene in mente solo una cosa: hai messo #define STRICT prima di includere windows.h???
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Renault Twingo E-Tech Electric: che prezzo! Renault Twingo E-Tech Electric: che prezzo!
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media Il cuore digitale di F1 a Biggin Hill: l'infrast...
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica DJI Osmo Mobile 8: lo stabilizzatore per smartph...
Recensione Pura 80 Pro: HUAWEI torna a stupire con foto spettacolari e ricarica superveloce Recensione Pura 80 Pro: HUAWEI torna a stupire c...
Opera Neon: il browser AI agentico di nuova generazione Opera Neon: il browser AI agentico di nuova gene...
Snap e Perplexity unite: dal prossimo an...
La Cina dice addio a NVIDIA? Il governo ...
Microlino, simbolo italiano della mobili...
Apple disattiverà la sincronizzaz...
Google lancia l'allarme: attenzione ai m...
Primo test drive con Leapmotor B10: le c...
'Non può essere un robot': l'uman...
Monopattino elettrico Segway Ninebot Max...
Syberia Remastered è disponibile:...
Sony scopre che tutti i modelli AI hanno...
Amazon nasconde un -15% su 'Seconda Mano...
Due occasioni Apple su Amazon: iPhone 16...
Verso la fine della TV tradizionale? I g...
Cassa JBL a 39€, portatili, smartphone, ...
Cometa interstellare 3I/ATLAS: la sonda ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 21:10.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v