Torna indietro   Hardware Upgrade Forum > Software > Programmazione

L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
La parola d'ordine al Nextcloud Summit 2026, che si è tenuto a Monaco, è stata "sovranità". Non come è spesso usato questo termine in politica ma, al contrario, come capacità positiva di decidere il proprio destino tecnologico, con modalità collaborative e aperte. L'Europa dice già molto nel mondo open source, che viene visto come mezzo per ottenere la tanto agognata autonomia digitale
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete implementa due bracci estensibili, per spazzola e moccio, che si spingono ben oltre quanto visto sino ad oggi permettendo una pulizia di casa ancor più capillare e precisa
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati
La tecnologia SQD-Mini LED di TCL arriva sul taglio da 65 pollici con la serie C8L: 2040 zone, pannello WHVA 2.0 e un picco che alle rilevazioni delle sonde tocca i 4400 nit nel profilo Filmmaker e un HDR quasi perfetto
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 11-12-2006, 14: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, 17:12   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
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, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2006, 07: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, 08:35   #4
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
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, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2006, 10: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, 10:21   #6
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
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, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 03-01-2007, 07: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, 08: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, 15: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, 15:33   #10
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
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, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 03-01-2007, 15: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, 07: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, 08:28   #13
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
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, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 11-01-2007, 13: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 14:27.
TonyManero è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2007, 09: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 11:00.
TonyManero è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2007, 13:12   #16
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
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, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2007, 13: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, 14:00   #18
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
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, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2007, 15: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, 15:26   #20
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
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, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026 L'Europa conta nella tecnologia e può ess...
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più Dreame X60 Pro Ultra Complete: i bracci si esten...
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati TCL 65C8L, la recensione del SQD-Mini LED da 440...
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro MSI Maestro 500 Wireless: ANC e 90 ore di autono...
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine NL-LC1 è il primo dissipatore a liquido A...
Prime Day clima e fresco in casa: Pingui...
Microsoft corregge una valanga di bug su...
La crisi delle memorie continuerà...
SBS amplia la gamma di accessori smart p...
rpilocator chiude a luglio: addio al sit...
Dai fondi di caffè un combustibil...
Vivo X Fold 6, il pieghevole è pronto al...
GTA 6, preordini aperti da oggi per le v...
Prime Day, Amazon Seconda Mano con il 15...
Operation Endgame, smantellate le reti d...
La crisi delle memorie si fa sentire: Mi...
Il primo iPhone con display pieghevole è...
OpenAI presenta Jalapeño, il prim...
Attacco informatico a Tata: rubati dati ...
Dopo gli unicorni, arrivano i "soon...
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: 09:08.


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