                    /^^^^\
.-^`------------                     `------------`^-.
 `:._.-._.-`-._.:|-<<>>WinlOOk 1.0<<>>-|:._.-`-._.-._.:
                   \                     /
                    \    ___________    /
                     \  / Developed \  /
                      \/ with VB 5.0 \/
                       \_____________/

WinlOOk 1.0 is made by Mikael Bohlin from Sweden, Skelleftehamn.
WinlOOk 1.0 should run on Windows 9x, I haven't tested it on Windows
2000 but if it doesn't work on your system, please E-Mail me with 
details on your system, and the error(s) you gained so that I can
(if possible) correct it/them.




Table of contents:
----
1. Forword.
2. The lists - The main program has four lists, read about them!
3. Function list.
4. Functions that may need explanation.
5. Things you shouldn't do - List of dangerous things.
6. Be extra careful when...
7. Disclaimer.
8. Last words.


1. Foreword:
----
WinlOOk 1.0 can be useful when a program freezes or something happens
that you can't control in the program (like closing it).
WinlOOk 1.0 can also be a way to learn more of windows.
WinlOOk 1.0 uses API calls to make the functions, the API functions
uses the handle of windows (hwnd) to make it's call.

You can either click the buttons to manipulate the window or you can
use the menus.

You should refresh the list using "Refresh list." button when the
program yields "WARNING : You should refresh the list.".

WinlOOk 1.0 was made in Visual Basic 5.0 Enterprise edition.
----


2. The lists:
----
The biggest list in the main program is the list of windows (both
child and parent windows), here you can click on a windows name to get
it's handle (hwnd), after you have selected the window you can use 
any of the functions.

The Child(s) list is a list of childs related to the selected window.

The Parent(s) list is a list of parents to the selected window.

The Menu(s) list is a list of menus to the selected window, double-click
on a item to bring another window that let's you manipulate the 
windows menu.
Click on the "All menus in use" button to show all menus in use by the
system.
----


3. Function list:
----
Make window invisible
Make window visible
Maximize window
Minimize window
Normalize window
Enable window
Disable window
Enable window redraw
Disable window redraw (can be very dangerous, don't play around)
Send keys (use the buttons to simulate Enter, Escape and other)
Close window
Destroy window
Set focus on window
Make window active
Bring window to top
Change parent to this one
Click button
Move window
Make window topmost
Activate window
Set text on window
Get group of windows
Close the group you've got
Send message
Post message
Post thread message
Save list into a file
Get info and menu of windows
Get more windows
Find window
Memory hacking (incomplete)
----

4. Functions that may need explanation:
----
Enable window redraw and Disable window redraw:
Windows automatically redraws the window when the redraw flag is set,
otherwize the user or the program have to, most programs let windows do
the work, so when disabling redraw things could go wrong and the program
may crash (or the system).

Send keys:
Send keys simulates the user pressing the keyboard, but all keys can't
be typed (Enter, Escape and such), so just press the button for that
event and the code for the character will show up, just type after the
code to simulate more keys.

Difference between Close window and Destroy window:
Close window waits for responce, Destroy window just destroys it.

Bring window to top:
This function brings the window to the top of the Z-Order, the top is
the window that is active and have focus and the one you're looking at
right now (probably).

Change parent to this one:
This is a interesting function that kidnappes a window and makes it a
child of WinlOOk, the Kidnapped windows window will appear showing the
window, if you want to return it to it's parent you have to click the 
"Return child to regular parent" menu.

Click button:
If it's a button it simulates the user clicking on it with the mouse,
it will click disabled buttons aswell.
(don't do this on the button, it will click it forever)

Send Message:
Sends a message to the window, the message has to be a number, use this
function with care, you can do almost everything that the other
functions can, and there are several more functions in this single 
function, be sure you know how to use the message, how the flags work
and so on before trying this.

Post Message:
Almost the same as Send Message, the difference is that Post Message
don't wait for an answer (with Send Message when it tries to close a 
window, it says "is it OK to close the window?" and have to wait until
the program says "yeah!" (if it does), you won't notice delay within
the program while Send Message is waiting).

Post Thread Message:
This functions posts a message to the thread controlling the windows
beneath it.

More windows 1:
This function gets windows because it has some properties, not because
it has a name.
Use the button "Add items to first list" to add the items to the main
list.

More windows 2:
This function uses the GetTopWindow, GetNextWindow and GetLastWindow
to find windows.
Use the button "Add items to first list" or "Add only first window of
windows" to add the items to the main list.

More windows 3:
This function enumerates the windows as you wish, the options are:
Enumerate both windows and childs.
Enumerate windows.
Enumerate childs (you have to enumerate the windows before enumerating
childs).
You can also choose if there should be any filtering, these are the
options:
Both non-text windows(or childs) and text ones. (no filtering)
Only text windows(or childs). (ignores windows with no text)
Only non-text windows(or childs). (ignores windows with text)
Use the button "Add items to the first list" to add items to the main
list.

Get window from point:
When you click on this item, it will show a window with two enabled
buttons, move the window so it's upper-left corner is where the window
is (the window you wan't the handle for) then click the big button,
and move the window down to the right, then click on the "Window"
button, after you've done that a handle should appear, now you need
to set the handle, do that by typing the number i the text-box (in the
main program) that has the text "Set handle:" next to it, then press
the "OK" button next to the text-box.
Now the program should yield "Warning : You should refresh the list", 
but you don't need to (the reason is that the class-name of the window
handle doesn't match the class-name in the list, it shouldn't cause it
isn't in the list).
If it doesn't yield "Warning : You should refresh the list" then you
have pointed to the selected window in the list, or the same type of 
window that is selected in the list (the class name is the type of
window that is displayed, every window has a class-name and it cannot
change while window is active and loaded, a class is registered using
the RegisterClass API-function but thats overcourse and totally
irrelevant here).

A little help window:
Just some short help.

Test your knowledge:
This shows a disabled window, that you have to enable, and then you
must complete a mission (like a game), when you've done all parts of 
the mission something will happen.
There are also a secret button that has no text, try to make it visible
and enabled then click on it.

Set handle:
Sets a window handle (hwnd), can be used with the Get window from point
function, or if you know the handle of a window but it isn't in the
list.

Search for Window:
Searches the list for a windows text.

Search for handle:
Searches the list for a windows handle.
----


5. Dangerous things you shouldn't do:
----
Close or destroy the Desktop Window (the desktop window controlles all
other windows).
Make the Desktop Window invisible.
Disable the Desktop Window.
Disable redraw is dangerous on most windows.
Change parent of the Desktop Window (I tried that, the system hanged).
Bring window to top on the Desktop Window.
Get group and Close group on the Desktop Window.
----


6. Be extra careful when:
----
Closing or destroying windows.
Changing parent of windows.
Disabling windows.
Disabling windows redraw.
Clicking buttons (depends on what button you click).
Maximizing windows (the windows may not have a system menu).
Making windows invisible.
Closing groups.
Doing anything to Windows programs like progman, explorer and such.
Doing anything with the desktop.
----


7. DISCLAIMER:
----
I (Mikael Bohlin) will not be held responcible for anything that this
program does to you or your surroundings direct or indirect.


This program is freeware and may be used freely by anyone.
----


8. Last words:
----
The spelling might be rather bad, but you should get the
point...
If some information is inperfect or wrong please e-mail me and I'll 
correct them if I see you're right.
If you have suggestions e-mail me and I'll look to it.

Have fun with the WinlOOk 1.0!

E-Mail: cyperium@hotmail.com
----
