Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Deebot X11 Omnicyclone implementa tutte le ultime tecnologie Ecovacs per l'aspirazione dei pavimenti di casa e il loro lavaggio, con una novità: nella base di ricarica non c'è più il sacchetto di raccolta dello sporco, sostituito da un aspirapolvere ciclonico che accumula tutto in un contenitore rigido
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio
Grazie ad un mocio rotante che viene costantemente bagnato e pulito, Narwal Flow assicura un completo e capillare lavaggio dei pavimenti di casa. La logica di intellignza artificiale integrata guida nella pulizia tra i diversi locali, sfruttando un motore di aspirazione molto potente e un sistema basculante per la spazzola molto efficace sui tappeti di casa
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi
Con un prezzo di 2.999 euro, il Panasonic Z95BEG entra nella fascia ultra-premium dei TV OLED: pannello Primary RGB Tandem, sistema di raffreddamento ThermalFlow, audio Technics integrato e funzioni gaming avanzate lo pongono come un punto di riferimento
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
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, 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
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, 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
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, 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
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, 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
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, 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
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, 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
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, 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
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


Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco Ecovacs Deebot X11 Omnicyclone: niente più...
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio Narwal Flow: con il mocio orizzontale lava i pav...
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi Panasonic 55Z95BEG cala gli assi: pannello Tande...
HONOR Magic V5: il pieghevole ultra sottile e completo! La recensione HONOR Magic V5: il pieghevole ultra sottile e co...
Recensione Google Pixel 10 Pro XL: uno zoom 100x assurdo sempre in tasca (e molto altro) Recensione Google Pixel 10 Pro XL: uno zoom 100x...
Arrivano le eSIM per iliadbusiness, l'of...
iPhone 17 e 17 Pro senza SIM fisica: non...
Hollow Knight: Silksong, primo record sp...
Public VCF as-a-Service, il nuovo serviz...
GAC annuncia il suo ingresso in Europa: ...
Un rene di maiale potrebbe salvarti la v...
Batterie al litio in aereo, la FAA lanci...
HONOR Magic V5: un tablet a portata di s...
Se non rientrate nei requisiti, non aspe...
È ora di aggiornare Windows 11: c...
Messico: 'aumentare le tasse sui videogi...
Prezzi Amazon a picco: come aggiornare i...
NVIDIA Rubin CPX con 128 GB GDDR7: 30 Pe...
smart #5 Brabus, primo contatto con la s...
Tineco presenta il futuro della pulizia ...
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: 11:24.


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