Problema con la user32.dll

martedì 21 novembre 2006 - 11.46

bule Profilo | Junior Member

Ciao a tutti avrei il seguente problema a cui non riesco a venire a capo da due giorni...molta ignoranza forse?

ho bisogno di usare la api user32.dll e la sua funzione sendMessage

ho un'applicazione c# a finestre:
form principale Form1, questo crea il Form2.
ora una volta importata la user32.dll e scritto il seguente codice
[DllImport("user32.dll",CharSet=CharSet.Auto)]

public static extern int SendMessage(

int hWnd, // handle della finestra

int Msg, // struttura messaggio

int wParam, // primo parametro messaggio

int lParam // secondo parametro messaggio

);

tento di mandare un window message al form2 , senza successo
cioè se scrivo
SendMessage(form2.Handle.toint32, WM_SYSCOMMAND, SC_CLOSE, 0);

non succede nulla, premetto che a WM_SYSCOMMAND, SC_CLOSE ho preventivamnte associato il giusto codice...

ora se invece apro la calcolatrice di windows, e tramite la funzione FindWindow(null,"calcolatrice"), sempra importatta dalla user32.dll, mi tovo l'handle della finestra il sendMessage fà effettivamnte quello che deve fare cioè chiudere l'applicazione.

Il mio problema è dunque : non posso mandare messaggi da un applicazione a un form appartenente alla stessa applicazione? mi sembra assurdo....

Brainkiller Profilo | Guru

>Il mio problema è dunque : non posso mandare messaggi da un applicazione
>a un form appartenente alla stessa applicazione? mi sembra assurdo....

Fai la FindWindow sulla Form2 e poi invia il messaggio di chiusura.
Se funziona poi verifica l'handle recuperato dalla FindWindow e quello di Form2.Handle.
Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

bule Profilo | Junior Member

ordunque... quello che mi restituisce il findwindow è lo stesso che trovo facendo form2.hadle...

non sò che dire...

se no c'è qualche sistema più .net compliant per mandare messaggi di windoes senza usare la user32.dll, anche se sinceramnte
mi dà un pò fastidio questa cosa..
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5