Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
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-winehq
Commits
6cfeeed0
Commit
6cfeeed0
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 identifier.
parent
1ef5affb
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
58 additions
and
3 deletions
+58
-3
En.rc
programs/taskkill/En.rc
+2
-0
taskkill.c
programs/taskkill/taskkill.c
+52
-1
taskkill.h
programs/taskkill/taskkill.h
+4
-2
No files found.
programs/taskkill/En.rc
View file @
6cfeeed0
...
...
@@ -33,6 +33,8 @@ STRINGTABLE
STRING_MUTUAL_EXCLUSIVE, "Error: Options /im and /pid are mutually exclusive.\n"
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_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 @
6cfeeed0
...
...
@@ -278,6 +278,57 @@ static int send_close_messages(void)
return
status_code
;
}
static
int
terminate_processes
(
void
)
{
unsigned
int
i
;
int
status_code
=
0
;
for
(
i
=
0
;
i
<
task_count
;
i
++
)
{
WCHAR
*
p
=
task_list
[
i
];
BOOL
is_numeric
=
TRUE
;
/* Determine whether the string is not numeric. */
while
(
*
p
)
{
if
(
!
isdigitW
(
*
p
++
))
{
is_numeric
=
FALSE
;
break
;
}
}
if
(
is_numeric
)
{
DWORD
pid
=
atoiW
(
task_list
[
i
]);
HANDLE
process
;
process
=
OpenProcess
(
PROCESS_TERMINATE
,
FALSE
,
pid
);
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
;
}
taskkill_message_printfW
(
STRING_TERM_PID_SEARCH
,
pid
);
CloseHandle
(
process
);
}
else
WINE_FIXME
(
"Forcible process termination by name is not implemented
\n
"
);
}
return
status_code
;
}
static
BOOL
add_to_task_list
(
WCHAR
*
name
)
{
static
unsigned
int
list_size
=
16
;
...
...
@@ -389,7 +440,7 @@ int wmain(int argc, WCHAR *argv[])
}
if
(
force_termination
)
WINE_FIXME
(
"Forced termination is not implemented
\n
"
);
status_code
=
terminate_processes
(
);
else
status_code
=
send_close_messages
();
...
...
programs/taskkill/taskkill.h
View file @
6cfeeed0
...
...
@@ -29,5 +29,7 @@
#define STRING_MUTUAL_EXCLUSIVE 106
#define STRING_CLOSE_PID_SEARCH 107
#define STRING_CLOSE_PROC_SRCH 108
#define STRING_SEARCH_FAILED 109
#define STRING_ENUM_FAILED 110
#define STRING_TERM_PID_SEARCH 109
#define STRING_SEARCH_FAILED 110
#define STRING_ENUM_FAILED 111
#define STRING_TERMINATE_FAILED 112
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