Jonas Skrevet 11. februar 2004 Del Skrevet 11. februar 2004 (endret) Hallo Tenker på å lage et "skin" til windows her nå, men har en del spørsmål så jeg lurer på om noe har gjort det før? Hvordan få lista opp alle vinduene som er oppe o.l. Hvordan "end" prosesser i listen? sånne ting. Noen som skjønner? Edit: et sånt program er jo ganske stort så er det noe muligheter for å "adde" deler av programmet inn i et "hovedprogram" sånn at jeg kan gjøre ferdig en del av programmer og bruke det mens jeg holder på med en ny del? eventuelt lagre koder i text filer og henter de opp når det trengs Endret 11. februar 2004 av jonas22282460 Lenke til kommentar
abcd423417984 Skrevet 11. februar 2004 Del Skrevet 11. februar 2004 isåfall må du vel bruke dll filer. Lenke til kommentar
Jonas Skrevet 11. februar 2004 Forfatter Del Skrevet 11. februar 2004 (endret) Hvordan bruker jeg dll filer? har aldri vært borti de Edit: hvordan lage dll filer egentlig? Edit2: ser at noen har prøvd å vise det på PSC men ingen har komentert koden.. Blir som å lære seg kinesisk fra en japansk mann noen som har et lite ekempel på hvordan loade noe (dll txt e.l.) med kode inni og kjører den? Endret 11. februar 2004 av jonas22282460 Lenke til kommentar
GeirGrusom Skrevet 11. februar 2004 Del Skrevet 11. februar 2004 Visual Basic kan bare lage Active X dller, skal du lage Windows skin, må du mest sannsynlig ha en del spesielle komandoer, men Visual Basic støtter bare et svakt klasse system, (ja, Viusal Basic støtter veldig lite av slike ting også) Du må nok kikke litt på C++. Som jeg har sagt ganske mange ganger før, skal du bruke Windows DLLer er API Text Viewer et utmerket verktøy, sammen med MSDN. Funksjonen du spør etter heter EnumProcesses Du kan ikke bruke den i Visual Basic, fordi Visual Basic sine arrays starter med 20 byte som forklarer hvordan arrayet er, men C++ trenger en peker (DWORD*) Du kan ikke få tak i peker til variabler i VB (du kunne det i QB) Lenke til kommentar
Jonas Skrevet 11. februar 2004 Forfatter Del Skrevet 11. februar 2004 Skjønte ikke helt 'Visual Basic sine arrays starter med 20 byte' men med.. En på PSC har lagd dette og han hadde lista opp alle vinduer med sitt eget skin og ram (eller var det cpu?) usage o.l. så det skal jo funker.. Hva ville du egentlig frem til? At jeg bare skulle glemme hele greia? Lenke til kommentar
aadnk Skrevet 11. februar 2004 Del Skrevet 11. februar 2004 Du kan ikke bruke den i Visual Basic, fordi Visual Basic sine arrays starter med 20 byte som forklarer hvordan arrayet er, men C++ trenger en peker (DWORD*)Du kan ikke få tak i peker til variabler i VB (du kunne det i QB) Ikke helt korrekt. I EnumProcesses kan du ganske enkelt peke til det første elementet i f.eks en long array. (Med ByRef hvis du forstår hva jeg mener). Og du kan faktisk få pekeren til en variabel med funskjonene VarPtr, StrPtr og ObjPtr. Disse er ikke fullstendig dokumentert, så det er ikke lett å oppdage dem, men de brukes relativt ofte. Jeg ville brukt denne metoden for å liste opp alle processes: Private Declare Function CreateToolhelp32Snapshot Lib "Kernel32" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long Private Declare Function Process32First Lib "Kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long Private Declare Function Process32Next Lib "Kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long Private Declare Sub CloseHandle Lib "Kernel32" (ByVal hPass As Long) Const TH32CS_SNAPHEAPLIST = &H1 Const TH32CS_SNAPPROCESS = &H2 Const TH32CS_SNAPTHREAD = &H4 Const TH32CS_SNAPMODULE = &H8 Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE) Const TH32CS_INHERIT = &H80000000 Const MAX_PATH As Integer = 260 Private Type PROCESSENTRY32 dwSize As Long cntUsage As Long th32ProcessID As Long th32DefaultHeapID As Long th32ModuleID As Long cntThreads As Long th32ParentProcessID As Long pcPriClassBase As Long dwFlags As Long szExeFile As String * MAX_PATH End Type Private Sub Form_Load() Dim hSnapShot As Long, uProcess As PROCESSENTRY32, r& hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0&) uProcess.dwSize = Len(uProcess) r = Process32First(hSnapShot, uProcess) Me.AutoRedraw = True Do While r Me.Print Left$(uProcess.szExeFile, IIf(InStr(1, uProcess.szExeFile, Chr$(0)) > 0, InStr(1, uProcess.szExeFile, Chr$(0)) - 1, 0)) r = Process32Next(hSnapShot, uProcess) Loop CloseHandle hSnapShot End Sub Lenke til kommentar
Jonas Skrevet 12. februar 2004 Forfatter Del Skrevet 12. februar 2004 Listing av prosesser kan jeg, men ikke avslutte dem.. Vet du eller noen andre hvordan jeg kan gjøre det? Lenke til kommentar
aadnk Skrevet 12. februar 2004 Del Skrevet 12. februar 2004 Først, legg til disse API-deklareringene: Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccessas As Long, ByVal bInheritHandle As Long, ByVal dwProcId As Long) As Long Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long Declare Function CloseHandle Lib "kernel32" (ByVal hPass As Long) As Long For å avslutte en process med koden jeg la ut, legg dette i DO-loopen. If uProcess.szExeFile = <HVA DU LETER ETTER> Then Ret = OpenProcess(&H1, 0&, uProcess.th32ProcessID) TerminateProcess Ret, 0 CloseHandle Ret End If Husk også å legge til en Dim Ret As Long i begynnelsen av sub-en. <Hva du leter etter> skal være EXE-navnet som brukeren har valgt til å avslutte fra f.eks en listbox. Lenke til kommentar
Jonas Skrevet 12. februar 2004 Forfatter Del Skrevet 12. februar 2004 Når du sier EXE-navnet, mener du da svchost.exe eller bare svchost? (svchost, et eksempel) Lenke til kommentar
Jonas Skrevet 12. februar 2004 Forfatter Del Skrevet 12. februar 2004 Jeg fikk ikke helt til den siste koden din jeg jeg fikk error på alle de 'Declare Function' så jeg la til 'private' forann. Gjorde det noe? Dette er da form_load koden som ikke funker. Steam kjører fortsatt helt fint etter programmet er kjørt: Private Sub Form_Load() Dim Ret As Long Dim hSnapShot As Long, uProcess As PROCESSENTRY32, r& hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0&) uProcess.dwSize = Len(uProcess) r = Process32First(hSnapShot, uProcess) Do While r If uProcess.szExeFile = "Steam.exe" Then Ret = OpenProcess(&H1, 0&, uProcess.th32ProcessID) TerminateProcess Ret, 0 CloseHandle Ret End If List1.AddItem Left$(uProcess.szExeFile, IIf(InStr(1, uProcess.szExeFile, Chr$(0)) > 0, InStr(1, uProcess.szExeFile, Chr$(0)) - 1, 0)) r = Process32Next(hSnapShot, uProcess) Loop CloseHandle hSnapShot End Sub Er det bare jeg som har blingsa litt? Lenke til kommentar
aadnk Skrevet 12. februar 2004 Del Skrevet 12. februar 2004 Beklager, tabbe. Slik skal koden være: Private Sub Form_Load() Dim Ret As Long, ProcessName As String Dim hSnapShot As Long, uProcess As PROCESSENTRY32, r& hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0&) uProcess.dwSize = Len(uProcess) r = Process32First(hSnapShot, uProcess) Do While r ProcessName = Left$(uProcess.szExeFile, IIf(InStr(1, uProcess.szExeFile, Chr$(0)) > 0, InStr(1, uProcess.szExeFile, Chr$(0)) - 1, 0)) If ProcessName = "Steam.exe" Then Ret = OpenProcess(&H1, 0&, uProcess.th32ProcessID) TerminateProcess Ret, 0 CloseHandle Ret End If List1.AddItem ProcessName r = Process32Next(hSnapShot, uProcess) Loop CloseHandle hSnapShot End Sub Lenke til kommentar
Jonas Skrevet 13. februar 2004 Forfatter Del Skrevet 13. februar 2004 Funka Men har noen noe ekempel på bruk av dll eller txt filer? de jeg har sett på psc er liksom ikke helt 'riktig'.. Lenke til kommentar
notarget Skrevet 14. februar 2004 Del Skrevet 14. februar 2004 Ta en titt på wincustomize.com Der finner du ca 2700stk skins til windows. Det er også forskjellige guider/linker der. Lenke til kommentar
Jonas Skrevet 14. februar 2004 Forfatter Del Skrevet 14. februar 2004 Ta en titt på wincustomize.comDer finner du ca 2700stk skins til windows. Det er også forskjellige guider/linker der. Er det ikke bare skins der da? Jeg skal ikke lage et sånt skin.. Jeg skal lage et program som bare ligger oppå det vanlige. Om noen har dette ferdig lagd ute uten source så har ikke jeg noe nytte av det! jeg skal lage det ikke bare ha meg et nytt skin.. Hva er morsomt med å instalere et nytt skin når man kan lage sitt eget? Jeg gjør dette fordi det er gøy, ikke for å bruke det.. Lenke til kommentar
Alexen Skrevet 19. mars 2004 Del Skrevet 19. mars 2004 Jeg regner med at det du mener er at du vil lage et eget shell til windows. Altså en erstatter for vår alles kjære explorer.exe. Det ligger maaaaaasse eksempler på nettet. Søk f.eks på planet-source-code etter "windows shell".. Lenke til kommentar
Jonas Skrevet 24. mars 2004 Forfatter Del Skrevet 24. mars 2004 Har sett der, og fått mye hjelp ja. Men jeg har et problem til: siden jeg skal avslutte explorer så kan jeg jo ikke åpne noen mapper! Noen som vet om noe løsning til dette, eller må jeg bruke FileListBox og de kjedelige greiene? Lenke til kommentar
GeirGrusom Skrevet 26. mars 2004 Del Skrevet 26. mars 2004 Det er ikke så lett som å erstatte explorer... Dette dere snakker om er "plug-ins" til windows, det er forklart litt løst i MSDN, men det står ganske mye om det. Det står i Platform SDK. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå