webForumDet fria alternativet

Äkta fokus på programmet

.NET

4 svar · 216 visningar · startad av mott

Medlem sedan juni 20001 356 inlägg
Frågan#1

Jag gör ett program där jag vill att det ska få äkta fokus, TOTAL uppmärksamhet och ploppa upp vad användaren än gör (man kan givetvis ställa in det)...

Hur gör jag? Försöker och försöker men programmet snappar inte åt sig fokus... :l

------------------
Daniel Mott
________________
War Is Peace. Ignorance Is Strength. Freedom Is Slavery.
1984, George Orwell
[: E-posta gärna. :]
Vad är godast?
Vad har du för operativsystem i din dator?

Medlem sedan juli 20011 304 inlägg
#2

Då får du lov att använda API.
Typ:

<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
'API -----------------------------
Declare Function SetWindowPos Lib "user32" _
(ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
ByVal x As Long, ByVal y As Long, ByVal cx As Long, _
ByVal cy As Long, ByVal wFlags As Long) As Long

Global Const SWP_NOMOVE = 2
Global Const SWP_NOSIZE = 1
Global Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE
Global Const HWND_TOPMOST = -1
Global Const HWND_NOTOPMOST = -2

'---------------------------------

Och sen där du vill sätta fokus:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
res& = SetWindowPos(Formnamnet.hwnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS) ' Gör överst
'Sen måste vi släppa fokua, annars kan vi inte göra nåt annat =)
res& = SetWindowPos(Formnamnet.hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, FLAGS) 'Lämna tillbaks

------------------
The computer is mightier than the pen, the sword, and usually, the programmer.

Medlem sedan feb. 200222 inlägg
#3

Jag är ju självlärd och så så jag vet inte om jag gör "rätt" men kan man inte sätta en interval på typ ..1...och skriva form1.setfocus..????bara undrar..

------------------
Marcus
-------------
"Kroppen är en koagulerad tanke."

Medlem sedan dec. 19991 072 inlägg
#4

Att sätta en timer med intervall på "1" är prestandamässigt fruktansvärt dumt och tidsödande.

Sen får inte fönstret "äkta" fokus, dvs. kan fortfarande finnas fönster som lägger sig över.

Med ett API-anrop kan du däremot tvinga fönstret att lägga sig över allt annat, program, spel osv.

Detta görs även bara med 1 kommando som körs en gång.

Om du har tänkt på hur "sök-rutan" i Anteckningar fungerar så ser du att den ligger över själva text-rutan även om det är text-rutan som har fokus där du kan skriva. Det åstakommer du tex. inte utan API.

------------------
Fredrik Klarqvist
f.klarqvist@spray.se
http://server.webwerkstaden.se/fredde/

Medlem sedan feb. 200222 inlägg
#5

Tack för förklaringen!!

------------------
Marcus
-------------
"Kroppen är en koagulerad tanke."

261 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)