Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Con la prima rete 5G Standalone attiva in Italia, WINDTRE compie un passo decisivo verso un modello di connettività intelligente che abilita scenari avanzati per imprese e pubbliche amministrazioni, trasformando la rete da infrastruttura a piattaforma per servizi a valore aggiunto
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro punta a diventare uno dei riferimenti assoluti nel segmento dei camera phone di fascia alta. Con un teleobiettivo Hasselblad da 200 MP, una batteria al silicio-carbonio da 7500 mAh e un display da 6,78 pollici con cornici ultra ridotte, il nuovo flagship non teme confronti con la concorrenza, e non solo nel comparto fotografico mobile. La dotazione tecnica include il processore MediaTek Dimensity 9500, certificazione IP69 e un sistema di ricarica rapida a 80W
DJI Romo, il robot aspirapolvere tutto trasparente
DJI Romo, il robot aspirapolvere tutto trasparente
Anche DJI entra nel panorama delle aziende che propongono una soluzione per la pulizia di casa, facendo leva sulla propria esperienza legata alla mappatura degli ambienti e all'evitamento di ostacoli maturata nel mondo dei droni. Romo è un robot preciso ed efficace, dal design decisamente originale e unico ma che richiede per questo un costo d'acquisto molto elevato
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


Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi Wind Tre 'accende' il 5G Standalone in Italia: s...
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh OPPO Find X9 Pro: il camera phone con teleobiett...
DJI Romo, il robot aspirapolvere tutto trasparente DJI Romo, il robot aspirapolvere tutto trasparen...
DJI Osmo Nano: la piccola fotocamera alla prova sul campo DJI Osmo Nano: la piccola fotocamera alla prova ...
FUJIFILM X-T30 III, la nuova mirrorless compatta FUJIFILM X-T30 III, la nuova mirrorless compatta
Addio console: Just Dance Now trasforma ...
Driver Radeon Adrenalin 25.10: perch&egr...
Oltre le GPU: NVIDIA annuncia NVQLink, ...
Samsung lancia il Team Galaxy Italia per...
Magic Leap: indistinguibili dai normali ...
Aruba Cloud: trasparenza sui costi e str...
Quando il cloud si blocca e resti al fre...
Integrare per competere, la sfida digita...
Leggenda del rally e modernità: S...
La Python Software Foundation rinuncia a...
Full HD e QLED, è in offerta un TV da 32...
Honda ha rilasciato un nuovo video sul p...
Resident Evil Requiem: arriva su Switch ...
Marshall Acton III in promo su Amazon in...
2 portatili che costano poco ma vanno be...
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: 00:52.


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