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...
<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
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..
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.