Monday, September 27, 2010

The first part of the Win32 debugging API


In this tutorial we will learn Win32 available to developers for debugging in the original language. At the end of tutorial we will learn how to debug a process.
Download example program.

Theory:
Win32 for programmers to use some API, which provides the equivalent function of the debugger. They were called the Win32 debugging API (or original language). Use the API, we can:

Load a program or bundled into a running program for debugging on
Obtained by low-level debugging of the program information, such as process ID, enter the address, the image base address and so on.
When the incident occurred and when debugging the notice, such as process / thread start / end, DLL loading / discharge, etc..
Modify the debugging process or thread
In short, we can use the API to write a simple debugger. As some of this subject is too large, I divide it into several parts, but this tutorial is the first part of it. In this tutorial, I will explain some of basic concepts and the general framework of the Win32 debugging API.
Use the Win32 debugging API, the following steps:

Create a process or tied to a running processes. This is the first step in using the Win32 debugging API. As our program to play the role of the debugger, we find a program for debugging. A program being debugged is called To debuggee. can be obtained in two ways debuggee:
Created by CreateProcess debuggee process. In order to create a process being debugged, you must specify DEBUG_PROCESS flag. This flag tells Windows that we want to debug the process. Debuggee occur when important events related with the debug (debug event), Windows will give us The program sends notification. debuggee immediately suspended to wait for our program ready. If debuggee also created a child process, Windows will for each child in the process of debugging events to send notification to our programs. This feature is usually not necessary. we can specify a combination of signs DEBUG_PROCESS DEBUG_ONLY_THIS_PROCESS and to ban it.
We can also use the DebugActiveProcess flag tied to a running processes.
Waiting for debug events. Debuggee process in obtaining a post, debuggee the main thread is suspended, the situation will continue to call WaitForDebugEvent up our procedures. WaitForXXX this function and other similar functions, for example, it blocks the calling thread until waiting for events. For this function, it wait for Windows to send debug events from the. Here is its definition:
WaitForDebugEvent proto lpDebugEvent: DWORD, dwMilliseconds: DWORD

lpDebugEvent is the address of a DEBUG_EVENT this structure will be filled on the debuggee debug events that occur in the information.

dwMilliseconds the function to wait for debugging events of the time, in milliseconds. If there is no time to debug the incident, WaitForDebugEvent return to the caller. On the other hand, if the parameter is designated as INFIN99vE constant, the function will have to wait until the debug events .

Now we look at DEBUG_EVENT structure.

DEBUG_EVENT STRUCT
dwDebugEventCode dd?
dwProcessId dd?
dwThreadId dd?
u DEBUGSTRUCT <>
DEBUG_EVENT ENDS

dwDebugEventCode The value specifies the wait events occurred in the type of debugging. because there are many types of events occur, our procedure to check the value, know the type of events and respond. The value of the possible values are as follows:

Value meaning
CREATE_PROCESS_DEBUG_EVENT process is created. When debuggee process has just been created (not running) or our program just to DebugActiveProcess tied to a process running when the event occurs. This is our procedure should be the first event.
EX99v_PROCESS_DEBUG_EVENT process exit.
CREATE_THEAD_DEBUG_EVENT When a new thread is created in deuggee process or our program to run in the first binding event occurs during the process. It should be noted that when debugge the main thread is created will not receive the notice.
EX99v_THREAD_DEBUG_EVENT debuggee the thread exit event. Debugee exit the main thread does not receive the notice. We believe that the main thread and debugge debuggee process is synonymous. So when we see CREATE_PROCESS_DEBUG_EVENT signs the procedure, the main thread it is CREATE_THREAD_DEBUG_EVENT logo.
LOAD_DLL_DEBUG_EVENT debuggee into a DLL. When the PE loader DLL first decomposition point to a link, we will receive the event. (When you call CreateProcess into debuggee time) and when debuggee also occurs when calling LoadLibrary.
UNLOAD_DLL_DEBUG_EVENT a DLL is unloaded from debuggee events.
EXCEPTION_DEBUG_EVENT in debuggee abnormal events occur. Note: This event is only the beginning in debuggee took place before the first instruction of its time. Exception is actually a debug interrupt (int 3h). If you want to restore debuggee things to DBG_CONTINUE signs calling ContinueDebugEvent function. Do not use the logo or debuggee DBG_EXCEPTION_NOT_HANDLED refuse to run in the NT (Win98 to run well).
OUTPUT_DEBUG_STRING_EVENT when debuggee DebugOutputString function call to send a message to our string when the event occurs.
RIP_EVENT system debugging error

dwProcessId and dwThreadId debug the course of events took place and thread Id. We can use these values as we are interested in the process or thread identifier. Remember, if we use CreateProcess to load debuggee, we can get debuggee in PROCESS_INFO the process of structural and thread. We can use these values to different debug event occurred in debuggee in the process or its children (if not specified DEBUG_ONLY_THIS_PROCESS signs).

u is a joint, including the commissioning event for more information. dwDebugEventCode different according to the above, it can be the following structure:

dwDebugEventCode u explained
CREATE_PROCESS_DEBUG_EVENT structure called CreateProcessInfo the CREATE_PROCESS_DEBUG_INFO
EX99v_PROCESS_DEBUG_EVENT structure called ExitProcess the EX99v_PROCESS_DEBUG_INFO
CREATE_THREAD_DEBUG_EVENT structure called CreateThread the CREATE_THREAD_DEBUG_INFO
EX99v_THREAD_DEBUG_EVENT structure called ExitThread the EX99v_THREAD_DEBUG_EVENT
LOAD_DLL_DEBUG_EVENT structure called LoadDll the LOAD_DLL_DEBUG_INFO
UNLOAD_DLL_DEBUG_EVENT structure called UnloadDll the UNLOAD_DLL_DEBUG_INFO
EXCEPTION_DEBUG_EVENT structure called the Exception of EXCEPTION_DEBUG_INFO
OUTPUT_DEBUG_STRING_EVENT structure called DebugString the OUTPUT_DEBUG_STRING_INFO
RIP_EVENT structure called RipInfo of RIP_INFO

In this tutorial I will not say all of these structures in detail, here only to talk about CREATE_PROCESS_DEBUG_INFO structure in detail.
Suppose our program calls the WaitForDebugEvent function and returns, the first thing we need to do is to check the value in terms debuggee dwDebugEventCode process occurred in the type of debug event. For example, if dwDebugEventCode value CREATE_PROCESS_DEBUG_EVENT, on u can be considered a member of the CreateProcessInfo with u.CreateProcessInfo to visit.

In our program, do the debugging event response. When WaitForDebugEvent return, which means that the process took place in the debuggee debug event or timeout occurred. So our procedure to check dwDebugEventCode to make an appropriate response. Here are some like handling Windows messages: the user to select and ignore messages.
Continue to run debuggee. When the debug event occurs, Windows hangs a debuggee, so when we finished with debugging event, but also to debuggee continue. ContinueDebugEvent function call to complete the process.
ContinueDebugEvent proto dwProcessId: DWORD, dwThreadId: DWORD, dwContinueStatus: DWORD

The function recovery as thread debugging events pending.
dwProcessId and dwThreadId is to restore the thread's process ID and thread ID, usually the two values from DEBUG_EVENT structure dwProcessId and dwThreadId members are.
dwContinueStatus report shows how to debug the event thread. There are two possible values: DBG_CONTINUE and DBG_EXCEPTION_NOT_HANDLED. For most debugging events, the two values are the same: to restore the thread. The only exception is EXCEPTION_DEBUG_EVENT, if the thread is reported in an exception debug event, which means that the thread in the debuggee an exception occurs. If you specify DBG_CONTINUE, the thread will ignore its own exception handling section and continue. In this case, our process must be to DBG_CONTINUE restoration of prior thread and handle the exception, or exceptions will be endless if we continue to occur .... DBG_EXCEPTION_NOT_HANDLED specified value, is to tell Windows that our procedure does not handle the exception: Windows will use the default exception handler debuggee to deal with exception.
In short, if our program does not consider the exceptions, and debugging process of the event has a point debuggee exception, it should call the function with DBG_CONTINUE logo ContinueDebugEvent. Otherwise, our program will have to DBG_EXCEPTION_NOT_HANDLED call ContinueDebugEvent. But in following this circumstances must DBG_CONTINUE signs: the first members of the value in ExceptionCode EXCEPTION_BREAKPOINT of EXCEPTION_DEBUG_EVENT event. When debuggee started its first instruction, our function will receive exception debug event. It is in fact a debug interrupt (int 3h). If we are to respond to DBG_EXCEPTION_NOT_HANDLED call ContinueDebugEvent debug events, Windows NT will refuse debuggee (because it is no exception handling). So in this case, the use DBG_CONTINUE flag tells Windows that we want the thread to continue execution.

Continue the above steps until the debuggee process cycle exit. Our program must be a message loop like the infinite loop until the end debuggee. The cycle of roughly as follows:
. While TRUE
invoke WaitForDebugEvent, addr DebugEvent, INFIN99vE
. Break. If DebugEvent.dwDebugEventCode == EX99v_PROCESS_DEBUG_EVENT

invoke ContinueDebugEvent, DebugEvent.dwProcessId, DebugEvent.dwThreadId, DBG_EXCEPTION_NOT_HANDLED
. Endw


That is, when starting the debugger, we can not debuggee separate program until it ended.

Let us summarize these steps:

Create a process or a bundle of our program to run the processes.
Wait for the debug events
Response debug event.
Continue debuggee.
To continue this endless loop until the end of the process debuggee
Examples:
This example shows debug a win32 program and handle, such as process, process Id, image base address and so on.

.386
. Model flat, stdcall
option casemap: none
include masm32includewindows.inc
include masm32includekernel32.inc
include masm32includecomdlg32.inc
include masm32includeuser32.inc
includelib masm32libkernel32.lib
includelib masm32libcomdlg32.lib
includelib masm32libuser32.lib
. Data
AppName db "Win32 Debug Example no.1", 0
ofn OPENFILENAME <>
FilterString db "Executable Files", 0, "*. exe", 0
db "All Files", 0 ,"*.*", 0,0
ExitProc db "The debuggee exits", 0
NewThread db "A new thread is created", 0
EndThread db "A thread is destroyed", 0
ProcessInfo db "File Handle:% lx", 0dh, 0Ah
db "Process Handle:% lx", 0Dh, 0Ah
db "Thread Handle:% lx", 0Dh, 0Ah
db "Image Base:% lx", 0Dh, 0Ah
db "Start Address:% lx", 0
. Data?
buffer db 512 dup (?)
startinfo STARTUPINFO <>
pi PROCESS_INFORMATION <>
DBEvent DEBUG_EVENT <>
. Code
start:
mov ofn.lStructSize, sizeof ofn
mov ofn.lpstrFilter, offset FilterString
mov ofn.lpstrFile, offset buffer
mov ofn.nMaxFile, 512
mov ofn.Flags, OFN_FILEMUSTEXIST or OFN_PATHMUSTEXIST or OFN_LONGNAMES or OFN_EXPLORER or OFN_HIDEREADONLY
invoke GetOpenFileName, ADDR ofn
. If eax == TRUE
invoke GetStartupInfo, addr startinfo
invoke CreateProcess, addr buffer, NULL, NULL, NULL, FALSE, DEBUG_PROCESS + DEBUG_ONLY_THIS_PROCESS, NULL, NULL, addr startinfo, addr pi
. While TRUE
invoke WaitForDebugEvent, addr DBEvent, INFIN99vE
. If DBEvent.dwDebugEventCode == EX99v_PROCESS_DEBUG_EVENT
invoke MessageBox, 0, addr ExitProc, addr AppName, MB_OK + MB_ICONINFORMATION
. Break
. Elseif DBEvent.dwDebugEventCode == CREATE_PROCESS_DEBUG_EVENT
invoke wsprintf, addr buffer, addr ProcessInfo, DBEvent.u.CreateProcessInfo.hFile, DBEvent.u.CreateProcessInfo.hProcess, DBEvent.u.CreateProcessInfo.hThread, DBEvent.u.CreateProcessInfo.lpBaseOfImage, DBEvent.u.CreateProcessInfo.lpStartAddress
invoke MessageBox, 0, addr buffer, addr AppName, MB_OK + MB_ICONINFORMATION
. Elseif DBEvent.dwDebugEventCode == EXCEPTION_DEBUG_EVENT
. If DBEvent.u.Exception.pExceptionRecord.ExceptionCode == EXCEPTION_BREAKPOINT
invoke ContinueDebugEvent, DBEvent.dwProcessId, DBEvent.dwThreadId, DBG_CONTINUE
. Continue
. Endif
. Elseif DBEvent.dwDebugEventCode == CREATE_THREAD_DEBUG_EVENT
invoke MessageBox, 0, addr NewThread, addr AppName, MB_OK + MB_ICONINFORMATION
. Elseif DBEvent.dwDebugEventCode == EX99v_THREAD_DEBUG_EVENT
invoke MessageBox, 0, addr EndThread, addr AppName, MB_OK + MB_ICONINFORMATION
. Endif
invoke ContinueDebugEvent, DBEvent.dwProcessId, DBEvent.dwThreadId, DBG_EXCEPTION_NOT_HANDLED
. Endw
invoke CloseHandle, pi.hProcess
invoke CloseHandle, pi.hThread
. Endif
invoke ExitProcess, 0
end start

Analysis:
Program first fill OPENFILENAME structure, called GetOpenFileName allows users to choose to debug procedures.

invoke GetStartupInfo, addr startinfo
invoke CreateProcess, addr buffer, NULL, NULL, NULL, FALSE, DEBUG_PROCESS + DEBUG_ONLY_THIS_PROCESS, NULL, NULL, addr startinfo, addr pi

When receiving the user selection, call the CreateProcess loader. And call the default value of fill GetStartupInfo STARTUPINFO structure. NOTE We will DEBUG_PROCESS mark and logo combination DEBUG_ONLY_THIS_PROCESS only debug the program, not including the child process.

. While TRUE
invoke WaitForDebugEvent, addr DBEvent, INFIN99vE


Is loaded in the debuggee, we call WaitForDebugEvent into endless loop debugging, WaitForDebugEvent debug event occurs in the debuggee returns, because we specified INFIN99vE as the second argument. When debug event occurs, WaitForDebugEvent back and fill DBEvent structure.

. If DBEvent.dwDebugEventCode == EX99v_PROCESS_DEBUG_EVENT
invoke MessageBox, 0, addr ExitProc, addr AppName, MB_OK + MB_ICONINFORMATION
. Break

We first check dwDebugEventCode of value if it is EX99v_PROCESS_DEBUG_EVENT, with a message box displays "The debuggee exits" and exit the debugging cycle.

. Elseif DBEvent.dwDebugEventCode == CREATE_PROCESS_DEBUG_EVENT
invoke wsprintf, addr buffer, addr ProcessInfo, DBEvent.u.CreateProcessInfo.hFile, DBEvent.u.CreateProcessInfo.hProcess, DBEvent.u.CreateProcessInfo.hThread, DBEvent.u.CreateProcessInfo.lpBaseOfImage, DBEvent.u.CreateProcessInfo.lpStartAddress
invoke MessageBox, 0, addr buffer, addr AppName, MB_OK + MB_ICONINFORMATION

If dwDebugEventCode value CREATE_PROCESS_DEBUG_EVENT, we show some interest in the message box the bottom of the information. The information obtained from the u.CreateProcessInfo. CreateProcessInfo a CREATE_PROCESS_DEBUG_INFO type of structure. You can access Win32 API access to it for more information e .

. Elseif DBEvent.dwDebugEventCode == EXCEPTION_DEBUG_EVENT
. If DBEvent.u.Exception.pExceptionRecord.ExceptionCode == EXCEPTION_BREAKPOINT
invoke ContinueDebugEvent, DBEvent.dwProcessId, DBEvent.dwThreadId, DBG_CONTINUE
. Continue
. Endif

If dwDebugEventCode value EXCEPTION_DEBUG_EVENT, we will further check the exception type. It is a lot of nested structure, but we can get from the exception type ExceptionCode members. If ExceptionCode value EXCEPTION_BREAKPOINT and was the first place (or we No known deuggee int 3h instructions), we can safely assume that the first instruction to be executed in debuggee this exception occurs when. in our completion of these processing, you can call ContinueDebugEvent with DBG_CONTINUE to continue debuggee. Then we continue to wait next debug events.

. Elseif DBEvent.dwDebugEventCode == CREATE_THREAD_DEBUG_EVENT
invoke MessageBox, 0, addr NewThread, addr AppName, MB_OK + MB_ICONINFORMATION
. Elseif DBEvent.dwDebugEventCode == EX99v_THREAD_DEBUG_EVENT
invoke MessageBox, 0, addr EndThread, addr AppName, MB_OK + MB_ICONINFORMATION
. Endif

If dwDebugEventCode value CREATE_THREAD_DEBUG_EVENT or EX99v_THREAD_DEBUG_EVENT, our program displays a message box.

invoke ContinueDebugEvent, DBEvent.dwProcessId, DBEvent.dwThreadId, DBG_EXCEPTION_NOT_HANDLED
. Endw

In addition to the above discussed EXCEPTION_DEBUG_EVENT, with signs calling ContinueDebugEvent function DBG_EXCEPTION_NOT_HANDLED resume debuggee implementation.

invoke CloseHandle, pi.hProcess
invoke CloseHandle, pi.hThread

When debuggee the end, we jumped out of the debugging cycle, this time to close the thread and process handles debuggee. To close the handle does not mean to shut down these processes and threads. Just not use these handles Bale.







Recommended links:



Visual Studio 2010 Will Be Formally Included F #



Common operation of FreeBSD 5.2



Training of new employees approach HR



MPEG to 3GPP



Listed company s three key financial indicators



Golden Abacus eAM State Assets Bureau Haizhu District, Guangzhou presence



Gateway Bank of CHINA has become the odds



Easy to use Games Simulation



Communication states united states into dell 39 s



AMD executives just compensation was 1.25 billion up wages Ma



OGM Converter



ASF To MPG



Report TIMERS And Time Synch



My favorite PASSWORD Managers



Tuesday, September 21, 2010

Star mass to "accreditation" may be interesting graffiti beef spoof



Step one: run a cattle images, click on "open a picture" button, to open a wall of photographs, as shown in Figure 02.

Figure 02 use of cattle to open a picture image

Step two: Click on upper right corner of the main interface of bovine image of "graffiti" button brings up to cattle, "graffiti" panel, as shown in Figure 03. Because it is a new feature, so we can start to learn what a cow images graffiti tools. In Figure 03, we see that in the "graffiti" panel in there, "drawing a line" "line drawing" "painting party", "Emulating" "draw arrow" five kinds of graffiti tools, were used to draw the free curve, straight line, rectangle, circle and arrow.


Figure 03 cattle images can "graffiti" tool

Step Three: Here we started the "graffiti" writing. First select the "line drawing" tool, and will be adjusted to 6 pixels thick brush, brush the color adjustment is white, then in the screen writing "accreditation" word, and finally add a phone number easily fill in the results as shown in Figure 04 ( just hold down the left mouse button, then drag the mouse on screen graffiti in a).


Figure 04 text for the image to add graffiti

Step Four: If you love enough to graffiti, then the screen can also add some small animals, little people and the like. In short, my picture I call the shots, thinking about how to draw on how to paint. As shown in Figure 05, is the author of "Emulating" and "painting party" and other tools to draw characters and animals.


Figure 05 Draw figures in the picture on the effect after

Step five: implementation of the "scene 鈫?real ones" command, select the scene in Figure 06, to produce the collective star to "accreditation" effect.


Figure 06 Application of "real ones," Scene

Scenarios, the final results shown in Figure 07.


The net effect of Figure Figure 07







相关链接:



Dell notebook case for the Core trial Xiamen



COMMENT Genealogy



Top Registry Tools



Sybase raise money for love during the full Sichuan



Find driving force behind IPv6



Firefox in hidden page 7



DETAILS determine success or failure: Lean Manufacturing (6)



Used to create automatic play music listening Pros CD



Infomation AUDIO Players



vob Video converter



Convert audio files



Articles About Communications Tools



2009 CAXA Ten News



Arima Computer integrated way of human Resources



how to convert mp3 to m4a



Green Dam How UNFORTUNATE?



Youtube to mpg



Sunday, July 25, 2010

Professional human resources workers 132 Tool - factors into account point method


Factors into account point method (point method) is a complex quantitative job evaluation techniques. It requires determining: a. multiple pay elements, each element should be divided into several levels; b. the level of these factors are the realities of the work. Therefore, if your job includes five levels, and assumes that each position to determine the different points each level value, then, as long as the average remuneration of the post elements identified by the Commission (and responsibility) of the level, you can each pay elements plus the total point value, and reached a total point value of each position. The result is a quantitative analysis of each job point value derived. Point value method is clearly the most widely used job evaluation method.

1. Factors into account point method steps
1) determine the family to evaluate the level
Because of very different jobs in different departments do not normally use a point value assessment program to evaluate the organization of all positions. So Step 1 is usually divided into functional families, such as administrative positions, sales positions, etc., for each job family, the Committee generally to develop a program.
2) to collect job information
Including job analysis, job description and job description development
3) Select the remuneration elements
Select the compensation elements, such as education, health needs or technology (usually a different level has different rewards ethnic elements).
4) define the elements of remuneration
Carefully define each element of remuneration to ensure that evaluation committee members when in the application of these elements is consistent. The following table gives some examples of definitions. Usually made by the human resources experts to define.
5) determine the factor levels
Determine the level of each factor, the evaluator can assess the elements of each job level or the number of elements. Therefore, the "complexity" factor, you might be divided into from the "repetitive action" to "creative action" these grades. The level of each factor, including no more than 5 to 6, the actual level depends on the number of evaluators in the evaluation of needs. Therefore, if all employees not in the quiet, air-conditioned office, is noisy, hot shop work, then the "working conditions" may simply be divided into two elements. Not every element are subject to the same level number, level number should be limited to clearly distinguish between the level of the post.
6) to determine the relative value of elements
This step is required to determine the weight of each element. This step is important, because for different jobs, some elements more important than other factors. Therefore, administrative staff, the "psychological needs" an important factor is much higher than the right to "physical requirements"; the positions of the workshop, it is likely the opposite.
Therefore, the next step is to determine fairly the value of each element, or "weight." This is usually accomplished by the Evaluation Committee. Evaluation Committee examine the definition of elements and their hierarchy, and then decided that each job family in the weights of the elements. One Method is given below:
Elements of the sequence assignment 100% of the maximum, and then the first element of the relative importance of the second highest percentage of sequence elements determining the assignment, and so on. For example:
100% of decision-making
85% solution
Knowledge 60%
The sum of the assignment (in this ratio: 100% +85% +60% = 245 percent). Then the following method to 245% into 100% value:
Decision 100 梅 245 = 40.8%
Solve the problem 85 梅 245 = 34.7%
Knowledge of 60 梅 245 = 24.5%
7) determine the elements and the elements of grade point value
Step 6 has been identified in various elements of the weight percentage of the form, it is shown in the following table to determine the point value of each element. For example, suppose the total project value of 500 points, while the "decision-making" elements of the weighting for 40.8%, so it's point value is 40.8% 脳 500 = 204.
Next is the 204 point in the "decision-making" elements of the internal distribution. This means that the highest level of decision-making capacity of the point value of 204. Then determine the maximum element of arithmetic form factor, etc., etc., and the lowest point value. For example, the use of grade number 5, except 204, tolerance is 40.8. So the minimum value of 41 points, etc.; second-82, and so on, the last first-class that is the highest point value such as 204. Each element can be similar to the deal.



8) the preparation of job evaluation guide
Point value of a jobs program for the last step is the preparation of "points value guide" or "job evaluation guide." This step is to set the elements and levels, point values compiled into a user-friendly guide.
9) Post column, etc.
Once the preparation of a good manual, you can begin evaluation of the actual position. Reviewers (usually Job Evaluation Committee), commonly used job evaluation manual jobs out, etc.. Each position are based on their job description and job description, according to the compensation factors are evaluated to determine its point value. First Evaluation Committee to decide how to factor in the grading of all positions. And then determine the corresponding point value, etc.. Finally, the point value of all elements of sum, gets the job total point value. Assessment are usually the first evaluation of key positions, consensus evaluation of the post after the rest of the tribe's position.
2. "Simplified" factors into account point method
Point value system to establish the post was clearly a time-consuming process. Therefore, many organizations developed a standard point value plan, and has been used by thousands of organizations use or adaptation. The program includes a number of established positions and levels of remuneration elements of the definition and the point value, and when used without or almost without amendment. A survey of U.S. companies shows that: 90% of the surveyed companies successfully use the ready-made point value assessment program.
3, factor into account the advantages and disadvantages point method
Factors into account point method has its advantages: it is an easy interpretation and evaluation of quantitative evaluation techniques; but on the other hand, a point value evaluation program is difficult, which is why many organizations ready to take the reasons for the program. In fact, this ready-made program for the reliability of job evaluation to some extent still problematic.







相关链接:



Recommend Anti-Virus Tools



Got hit by Baidu PPC



What is mkv



Recommend Development



Mov To Avi Converter



apple Tv



Converter mp4 to 3gp free



He Jinghua Xu Shaochun joined the first on



Baidu Hand Symantec



District Extension: I dare go?



Zhongguancun business will have been cleaned up And returned rectifying Zanji



Advertising is Losing confidence!



Ninth Zhongguancun Computer Festival was officially opened



Thursday, July 22, 2010

How to make VB do not echo in the text box



In the application, and sometimes require the user to input a number of inappropriate content directly on the screen display, such as user passwords or confidential data. We have known that in Foxbase / Foxpro in this function can SETCONSOLEOFF command to turn off the screen echo to achieve. So, VisualBasicforWin-dows in how to do this?

An easy way to think of is to use a text box Key-Press event, but in order to handle user text editor (such as delete, insert), then other variables are also stored the contents of the real input, and must write a large number of complex control program. Practice shows that the method is relatively complicated, inconvenient to use.

I found in programming with VB, Windows text box to respond to many messages, then it possible to use WindowsAPI function sendmessage messaging control features to the text box? If feasible, you can make a password form of the output target messaging to the text box, no can not echo the text create a text box yet?

The answer is yes. I use these ideas to achieve this functionality. The following is the procedure used in some API functions and related information:

getfocus (): get the input focus back to target handle;

getwindowlong (): get the specified goals, the second argument will be returned when the target for the GWL_STYLE "style" attribute;

setwindowlong (): the new property value given the specified target. The function of three parameters were targeted handle, property type, new attribute values;

sendmessage (): send a message to the target. The function of the four parameters are objective handles receiving messages, message, message parameter a, the message parameter b;

GWL_STYLE (program for short STYLE): its value is -16, said the goal of "style";

ES_PASSWORD (abbreviated program PASS) abbreviated as PASS): The value of & H20, that goal has entered the password attribute, that entry without echo;

EM_SETPASSWORDCHAR (program for short PASSCHAR): its value & H41C, that pass the password feature. Transfer to the target with this message sendmessage successful, the target will be its own output to specify the password given in the form.

The following procedures, by sendmessage function to modify the text box Text1 "style" attribute to specify the password to the form of output --- no matter what the content of user input, all with the same number of "*" to display. Users can single "Command1" button to display the actual contents of Text1.Text.

DeclareFunctiongetfocusLib "user" () AsInteger
DeclareFunctiongetwindowlongLib "user" (ByVal handAsInteger, ByVal indexAsInte-ger) AsLong
DeclareFunctionsetwindowlongLib "user" (ByVal handAsInteger, ByVal indexAsInte-ger, ByVal newflagAsLong) AsLong
DeclareFunctionsendmessageLib "user" (ByVal handAsInteger, ByVal msg As Integer, ByVal wparaAsInteger, ByVallparaAsLong) AsLong
ConstSTYLE =- 16
ConstPASS = & H20

ConstPASSCHAR = & H41C

SubCommand1_Click ()
MsgBoxtext1.Text
EndSub
SubCommand2_Click ()
End
EndSub
SubForm_Load ()
Show
text1.SetFocus
hand% = getfocus ()
flag & = getwindowlong (hand%, STYLE) OrPASS
flag & = setwindowlong (hand%, STYLE, flag &)
flag & = sendmessage (hand%, PASS-CHAR, Asc ("*"), 0 &)







Recommended links:



Msvideo



Geography Education brief



Shop Investment Tools



convert dvd to wmv



Youtube to M4V Pack



Mars text input text input V2.7.2 version of Easy Fun



Kids Education Infomation



Midea president appointed two



.dvd file



CollSoft DVD Copy



Learning the basic concept of the nine JSP implicit objects



ALLRIPPER DVD to WMV



BURN4FREE



for you Cartoons - Screen Savers



Wma converter



Tuesday, July 6, 2010

Youtube FLV to iphone Help

Hot popluar youtube video Converter + download + player tool. With YouTube tool you can also convert downloaded YouTube videos to a format compatible with your favorite portable device; including - iPod Video, iPod Touch, iPod Nano, iPhone, Zune, PSP, as well as video capable MP3 players, video capable mobile phones, and Pocket PC, And finally... YouTube tool's embedded player will allow you to watch all your favorite YouTube videos off-line. So now you can enjoy any .flv and .swf videos anytime!
Supports YouTube video or any .flv and .swf file as input file. Supports not only YouTube video, but also various video formats as input file, including avi, DivX, XviD, rm, rmvb, MOV, MPEG, WMV. Supports a wide variety of output file format., including avi, DivX, XviD, rm, rmvb, MOV, MPEG, WMV. Provides various profiles, these profiles can meet the needs of most people. - is the most powerful YouTube assistant on the planet.



Recommand Link:



Avi To Mpeg



SuperBurner DVD to DivX



convert mov to mp4



LasVegas RMVB To DVD



SuperBurner DAT to DVD



AD Blockers comparison



BLUESEA M4V Deconde



Christmas-Idea DVD to AVI



My Favorite Source Editors



apple TV



Convert Mp4 To Wma



Comment Puzzle And Word Games



Youtube Movie To VOB Store



Friday, June 25, 2010

Christmasgift Mobile Converter

Christmasgift Mobile Converter is an All-in-One solution to create Mobile Phone 3GP movies from DVDs, TV shows and downloaded videos. The software combines DVD to Mobile Converter and 3GP Video Converter in one package for discounted price. The software is easy to use. It features superb video audio quality and the fastest conversion techniques availabe on the market (Up to 3x faster).

Christmasgift Mobile Converter easy converts all popular video formats such as AVI, DivX/Xvid, WMV, RM, MPG, MOV, MPEG (and many more) videos into Mobile Phone 3GP format. Watch movies on the road. Support all mobile phones with 3GP video capability. The software is very easy to use. It compresses a full lengh movie into small size which can be fitted in a 128MB memory card. Carry your movie theater on the go! Watch movies anywhere, anytime - a new life style.



Recommand Link:



How to Edit Mobile Phone Plus



X-CLONER DVD to SWF



Picked XML Or CSS Tools



Open Wii Converter



Review Password Managers



DVD To Sony NWZ-S738F



Rip and Unprotect



Utube



Professional DVD VOB Cloner



CONVERT DVD to Sony NWZ-S738F



AllRipper YouTube To IPod



Genealogy Reviews



Mobile Phone Audio Editor



Fast AVI MPEG Splitter



Fast MIDI to MP3 Converter



Thursday, June 17, 2010

Youtube Video to iphone Popular

It's most popular and very easy to use YouTube tools. helps you Fast download, convert, play, manage your favorite YouTube videos. If you're a YouTube fan, you'll love YouTube tool! is the most powerful YouTube assistant on the planet. YouTube tool easily: 1. Fast downloads YouTube videos, 2. Supports unlimited simultaneous downloads (a real time saver!), 3. Automatically names the downloaded video the same as the YouTube title, 4. Converts YouTube videos to various video formats, including Video, DVD, VCD, AVI, MPG, MPEG, Divx, Xvid, WMV, RM, RMVB, MOV, MP4, 3GP, SWF, DAT, H264, VOB, Flash, PDA, M4V, 3G2, AMV, CDA, DV,QuickTime, ASX, TV, VHS, FLV, H264, BDMV, MAC, Apple TV, Zune, iPod, PDA, PSP, PS2, PS3, Xbox, Xbox 360, Mobile Phone, Cell Phone, Blackberry, Wii, Laptops, Printers, Palm OS, Pocket PC, PPC, Treo, Psion, EPOC, iphone.
Easily Convert all popular video formats. Provides the highest speed to download YouTube video. Support unlimited simultaneous downloading tasks. Supports auto-name your downloaded video title as the YoutTube page shows. Offers you the most convenient task management and the easiest control capability. About Conversion Features. - is the most powerful YouTube assistant on the planet.



Recommand Link:



Storage File And Disk Management



New Gallery And Cataloging Tools



My favorite Flash Tools



Movavi DVD Ripper



Youtube to SWF Online



DVD to ZEN Vision W converter



River Past Video Perspective



Merry CDA CD-R M3U to AAC Backup



Kacoo PSP Converter



ALLTODVD DVD to iPhone



X-Cloner 3GP Converter



best SOFTWARE free trial



Youtube to Palm OS Help



Download video to Archos 5 IT soft



Youtube to RM Store