Elikkä olen ny värkkiny tämmösiä simppeleitä
selaimia, joidenka tarkotuksena on helpottaa
habbohotellissa kulkua. Tein tästä threadin
pari kuukautta takaperin, jossa kyselin
pikanäppäimien käytöstä.
Tällä kertaa ongelmana on kuitenkin jumalaton
muistin syöminen. Tämä kyseinen ( exenä 28kt )
oleva ohjelma syö yli 70 megatavua muistia!
Mikä avuksi?
Alla koodi kokonaan. Jos jotenkin saisin sitä
vörkittyä paremmaksi, niin antakaas vaan kuulua.
Private Const lpClassName = "Winamp v1.x" Private Const strTtlEnd = " - Winamp" Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long Private Function HaeWinampKappale() As String Dim hWnd As Long hWnd = FindWindow(lpClassName, vbNullString) 'etsitään winamp Dim lpText As String * 100 If hWnd = 0 Then 'ei löytynyt HaeWinampKappale = "Ei kappaletta" Exit Function End If Dim intLength As Integer intLength = GetWindowText(hWnd, lpText, Len(lpText)) If (intLength <= 0) Or (intLength > Len(lpText)) Then 'ei onnistunut HaeWinampKappale = "Tuntematon" Exit Function End If Dim strTitle As String 'oletetaan että onnistui strTitle = Mid$(lpText, 1, intLength) 'otetaan vielä mahdollisesti ylimääräinen Winamp teksti lopusta pois Dim winampViiva As Integer winampViiva = InStr(1, strTitle, strTtlEnd, vbTextCompare) If winampViiva > 1 Then strTitle = Left$(strTitle, winampViiva) End If HaeWinampKappale = Trim$(strTitle) End Function Private Sub Form_DblClick() Me.Width = WebBrowser1.Width - 1200 Me.Height = WebBrowser1.Height End Sub Private Sub Form_Load() Me.Width = WebBrowser1.Width - 1200 Me.Height = WebBrowser1.Height End Sub Private Sub gogogo_Click() WebBrowser1.Navigate "http://www.turska.org/~habbative/fin/client_popup[2].html" End Sub Private Sub Timer_Timer() On Error Resume Next If GetAsyncKeyState(vbKeyF6) <> 0 Then SendKeys (".{bs}{bs}{bs}" & (HaeWinampKappale) & "~") End If End Sub Private Sub Timer1_Timer() If Habboselain.WindowState = Minimized Then Habboselain.Visible = False End If End Sub Private Sub Timer2_Timer() On Error Resume Next If GetAsyncKeyState(vbKeyF7) <> 0 Then Habboselain.WindowState = vbNormal Habboselain.Visible = True End If Timer2.Enabled = False End Sub
No jos tuosta pitäisi muistin kuluttajaa veikata, niin arvelisin että syyllinen on tuo webbrowser kontrolli. Koodia voisi muutenkin optimoida, ei ole oikein ideaa ehkä laittaa jokaiselle tarkistukselle omaa timer kontrollia.
Siirrä tarkistus koodit yhteen timer kontrolliin, tai tee vaikka silmukka sen tilalle. Lisää myös aliohjelman viimeiselle koodiriville:
Doevents
Ai piru ... Luen tuolta oppaasta kyllä noita juttuja, mutten tajua höläyksen pöläystäkään silmukoista.
Jos tekisit jostain kohtaa koodistani esimerkin, niin yrittäisin pähkäillä sen kanssa.
Kiitos.
laxative kirjoitti:
Ai piru ... Luen tuolta oppaasta kyllä noita juttuja, mutten tajua höläyksen pöläystäkään silmukoista.
Silmukat kuuluvat kyllä ihan perusjuttuihin ja ne pitäisi vähintään osata, ennen kuin selainta rupeaa tekemään. Kannattaa lukea niitä oppaita.
Aihe on jo aika vanha, joten et voi enää vastata siihen.