Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
a7431fe9
Commit
a7431fe9
authored
Sep 21, 2010
by
Andrew Nguyen
Committed by
Alexandre Julliard
Sep 21, 2010
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
taskkill: Implement forcible termination by process name.
parent
6cfeeed0
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
55 additions
and
4 deletions
+55
-4
En.rc
programs/taskkill/En.rc
+1
-0
taskkill.c
programs/taskkill/taskkill.c
+50
-1
taskkill.h
programs/taskkill/taskkill.h
+4
-3
No files found.
programs/taskkill/En.rc
View file @
a7431fe9
...
...
@@ -34,6 +34,7 @@ STRINGTABLE
STRING_CLOSE_PID_SEARCH, "Close message sent to top-level windows of process with PID %u.\n"
STRING_CLOSE_PROC_SRCH, "Close message sent to top-level windows of process \"%s\" with PID %u.\n"
STRING_TERM_PID_SEARCH, "Process with PID %u was forcibly terminated.\n"
STRING_TERM_PROC_SEARCH, "Process \"%s\" with PID %u was forcibly terminated.\n"
STRING_SEARCH_FAILED, "Error: Could not find process \"%s\".\n"
STRING_ENUM_FAILED, "Error: Unable to enumerate the process list.\n"
STRING_TERMINATE_FAILED, "Error: Unable to terminate process \"%s\".\n"
...
...
programs/taskkill/taskkill.c
View file @
a7431fe9
...
...
@@ -280,9 +280,17 @@ static int send_close_messages(void)
static
int
terminate_processes
(
void
)
{
DWORD
*
pid_list
,
pid_list_size
;
unsigned
int
i
;
int
status_code
=
0
;
pid_list
=
enumerate_processes
(
&
pid_list_size
);
if
(
!
pid_list
)
{
taskkill_message
(
STRING_ENUM_FAILED
);
return
1
;
}
for
(
i
=
0
;
i
<
task_count
;
i
++
)
{
WCHAR
*
p
=
task_list
[
i
];
...
...
@@ -323,9 +331,50 @@ static int terminate_processes(void)
CloseHandle
(
process
);
}
else
WINE_FIXME
(
"Forcible process termination by name is not implemented
\n
"
);
{
DWORD
index
;
BOOL
found_process
=
FALSE
;
for
(
index
=
0
;
index
<
pid_list_size
;
index
++
)
{
WCHAR
process_name
[
MAX_PATH
];
if
(
get_process_name_from_pid
(
pid_list
[
index
],
process_name
,
MAX_PATH
)
&&
!
strcmpiW
(
process_name
,
task_list
[
i
]))
{
HANDLE
process
;
process
=
OpenProcess
(
PROCESS_TERMINATE
,
FALSE
,
pid_list
[
index
]);
if
(
!
process
)
{
taskkill_message_printfW
(
STRING_SEARCH_FAILED
,
task_list
[
i
]);
status_code
=
128
;
continue
;
}
if
(
!
TerminateProcess
(
process
,
0
))
{
taskkill_message_printfW
(
STRING_TERMINATE_FAILED
,
task_list
[
i
]);
status_code
=
1
;
CloseHandle
(
process
);
continue
;
}
found_process
=
TRUE
;
taskkill_message_printfW
(
STRING_TERM_PROC_SEARCH
,
task_list
[
i
],
pid_list
[
index
]);
CloseHandle
(
process
);
}
}
if
(
!
found_process
)
{
taskkill_message_printfW
(
STRING_SEARCH_FAILED
,
task_list
[
i
]);
status_code
=
128
;
}
}
}
HeapFree
(
GetProcessHeap
(),
0
,
pid_list
);
return
status_code
;
}
...
...
programs/taskkill/taskkill.h
View file @
a7431fe9
...
...
@@ -30,6 +30,7 @@
#define STRING_CLOSE_PID_SEARCH 107
#define STRING_CLOSE_PROC_SRCH 108
#define STRING_TERM_PID_SEARCH 109
#define STRING_SEARCH_FAILED 110
#define STRING_ENUM_FAILED 111
#define STRING_TERMINATE_FAILED 112
#define STRING_TERM_PROC_SEARCH 110
#define STRING_SEARCH_FAILED 111
#define STRING_ENUM_FAILED 112
#define STRING_TERMINATE_FAILED 113
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment