Hirdetés
- Olyan erőre tettek szert a böngészők, ami átformálhatja a piacot
- Az ötlet jó, a kivitelezés kevésbé: Chieftec The Cube teszt
- Megbüntették, ezért feloszlatná az EU-t Elon Musk
- Egészen különleges funkciókat kaptak a Lian Li RS sorozatú tápjai
- A szörnyetegek között is szörnyen gyors az Amazon új Graviton processzora
- Szünetmentes tápegységek (UPS)
- VR topik
- Itt a Valve GŐZGÉP — Steam Machine, mi vagy te? 🧐
- DUNE médialejátszók topicja
- Milyen egeret válasszak?
- Vezeték nélküli fülhallgatók
- Amlogic S905, S912 processzoros készülékek
- Azonnali fotós kérdések órája
- Ha a koreaiakon múlik, még évekig ingünk-gatyánk rámehet a memóriákra
- Az ötlet jó, a kivitelezés kevésbé: Chieftec The Cube teszt
-
PROHARDVER!

Új hozzászólás Aktív témák
-
pmonitor
aktív tag
válasz
lenkei83
#16474
üzenetére
Ez esetben a belépésnél el kell küldened a PID-et, vagy a Fő form Handle-jét, és rögzíted az adatbázisban, ha nincs benne. Én a fő form Handle-jét küldeném el, mert ebből is utána lehet nézni a PID-nek. A következő lépés attól függ, hogy mit rögzítesz az adatbázisban. Ha a Fő form Handle-jének WM_DESTROY üzenetet küldesz a SendMessage-el, akkor ugyanazt éred el, mint az application.exit-el(ez "mindent visz"). Ha WM_CLOSE üzenetet küldesz neki, akkor lefut pl. a form Form_Closing eseménye(ebből akár meg is akadályozhatod, hogy bezáródjon a form). Példaként megcsinálhatod a következőt(ha 64 bites wined van). Letöltöd innen a Processx64.rar-t.
Ezután készítesz egy winform alkalmazást, amire rádobsz egy textbox-ot, egy button-t, és egy combobox-ot. Design nézetben elrendezed őket úgy, ahogy akarod. A Form1.vb-ben lévő dolgokat lecseréled erre:Imports System.Runtime.InteropServices
Public Class Form1
Const WM_CLOSE = &H10
Const WM_DESTROY = &H2
Const WM_GETTEXTLENGTH = &HE
<DllImport("user32.dll", CharSet:=CharSet.Auto)>
Public Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As Integer, ByVal lParam As IntPtr) As IntPtr
End Function
Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
Button1.Text = "Bezárás"
ComboBox1.Items.AddRange(New Object() {"WM_CLOSE", "WM_DESTROY"})
ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList
ComboBox1.SelectedIndex = 0
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If IsNumeric(TextBox1.Text) Then
Dim WM As Integer
If SendMessage(TextBox1.Text, WM_GETTEXTLENGTH, 0, IntPtr.Zero) Then
If ComboBox1.SelectedIndex = 0 Then
WM = WM_CLOSE
Else
WM = WM_DESTROY
End If
SendMessage(TextBox1.Text, WM, 0, IntPtr.Zero)
Else
MsgBox("Az ablaknak nincs címe!")
End If
End If
End Sub
End ClassEzt lefordítod. Ha minden jól megy akkor le is fordul. Majd megnyitsz egy notepad-ot, és írsz bele valamit. Megnyitod a Processx64.rar-ban lévő .exe-t és megkeresed azt a notepad-ot. Jobb klikk->Ablakok kiválasztása. A megnyíló ablakban megkeresed a Class mezőben a "Notepad"-ot. Ebben a sorban a Hwnd-t átmásolod a lefordított programod textbox-ába. Kiválasztod a combobox-ban a műveletet, majd klikk a button-ra. Itt láthatod a különbséget a WM_CLOSE és a WM_DESTROY között.
Neked ugyanezt kellene csinálnod, csak az adatbázisban tárolt Handle-nek küldeni ezeket.
-
martonx
veterán
válasz
lenkei83
#16475
üzenetére
User ellenőrzés szintjén úgy működhetne, hogy a user aktivitásakor ezt a táblát, amiben a Ture/False-t váltogatod, updatelnél egy mondjuk LastActivity timestamp mezőt.
Azt SQL job meg azt aki aktív, de a LastActivity-je mondjuk fél óránál régebbi, zokszó nélkül átállítja False-ra. -
martonx
veterán
válasz
lenkei83
#16467
üzenetére
Éppen most kezdesz eljutni a felismerésig, hogy ehhez egy alkalmazás szerver fog kelleni. Pedig te csak egy fapados session kezelést szerettél volna. Hát így jön ide az űrhajó.
Egy kókány módszert azért megléphetsz űrhajó építés előtt. Csinálj egy SQL jobot, amit utemezve tudsz futtatni, és az majd átállítja az inaktív usereket. -
martonx
veterán
válasz
lenkei83
#16465
üzenetére
"De malfunction esetén ez akár be is ragadhat, ha pl feladatkezelőn keresztül bezárom a progit." - ez nem így van. Ebben az esetben SQL oldalon is el fog halni elég gyorsan az ide tartozó session. Az adatbázist ugye using-al használod? Azaz automatikusan dispose-oldóik?
És ennek semmi köze Asp.Net hez 
Értem én, hogy valamit alapvetően rosszul írtál meg, és most nem ezt akarod kijavítani, hanem űrhajót építeni köré
Hidd el, mindenkinek jobb lesz, ha a kódodat javítod, ahelyett hogy űrhajót építenél.
SQL session-ök lekérdezése és erőltetett bezárása simán megoldható: KILL SPID command in SQL Server (sqlshack.com)De hidd el, neked nem ez kell, hanem egy jól működő programkód, ami nem hagy szemetet maga után.
-
válasz
lenkei83
#16463
üzenetére
Aktív session kap valami hash-t vagy hasonlót (guid is jó), aztán handshake x időnként, amikor le van csekkolva, hogy ugyanaz a hash mindkét oldalon, aztán ha minden fasza, mehet a következő hash a következő handshakeig.
Így ha bezárod is kliens oldalon, pikkpakk timeoutol serveroldalon, plusz ha bezárod és újranyitod se lesz automatikusan belogolva, mert nem lesz meg az új instance-nek az aktuálisan elvárt hash.
Persze van ennél (sokkal) jobb megoldás is, de ha csak valami olyan kell, ami egyszerű, relative biztonságos és nem eszik sokat, akkor tökéletes ez is.
Ui: Ha ennyire nem kell túlgondolni, akkor meg simán socket close-ra is lehet figyelni és kész.
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
- Megbüntették, ezért feloszlatná az EU-t Elon Musk
- Szünetmentes tápegységek (UPS)
- VR topik
- Magga: PLEX: multimédia az egész lakásban
- MasterDeeJay: i7 4980HQ asztali gépben, újabb kínai csoda.
- Itt a Valve GŐZGÉP — Steam Machine, mi vagy te? 🧐
- Xiaomi 15T Pro - a téma nincs lezárva
- Xbox Series X|S
- DUNE médialejátszók topicja
- Assetto Corsa EVO
- További aktív témák...
- Apple iPhone 13 / 128GB / Kártyafüggetlen / Akku:87%
- Apple iPhone 14 / 128GB / Kártyafüggetlen / 12HÓ Garancia / Akku: 85%
- Újszerű Samsung Galaxy Tab S10 Lite X406 - Samsung Galaxy Tab S11 Ultra X930
- Akciós! Lenovo ThinkPad P15 Gen 1 Intel i7-10875H 32GB 512GB Nvidia Quadro RTX 3000 1 év garancia
- Lenovo ThinkPad P15 Gen 2 Intel i7-11850H 32GB 1000GB Nvidia RTX A4000 1 év garancia
- ÁRGARANCIA!Épített KomPhone i5 14600KF 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- Xiaomi Redmi 13 128GB, Kártyafüggetlen, 1 Év Garanciával
- Telefon felvásárlás!! iPhone 16/iPhone 16 Plus/iPhone 16 Pro/iPhone 16 Pro Max
- Xiaomi 11T Pro / 8/128GB / Kártyafüggetlen / 12Hó Garancia
- Bomba ár! Dell Latitude E6440 - i5-4GEN I 8GB I 256SSD I 14" HD I HDMI I Cam I W10 I Garancia!
Állásajánlatok
Cég: BroadBit Hungary Kft.
Város: Budakeszi
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest

És ennek semmi köze Asp.Net hez 


