Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
3f53efa5
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
3f53efa5
编写于
4月 30, 2018
作者:
R
Rachel Macfarlane
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Show window title as part of process name in process explorer, fixes #48626
上级
a287dcd8
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
39 addition
and
13 deletion
+39
-13
src/vs/code/electron-browser/processExplorer/processExplorerMain.ts
...e/electron-browser/processExplorer/processExplorerMain.ts
+33
-13
src/vs/platform/issue/electron-main/issueService.ts
src/vs/platform/issue/electron-main/issueService.ts
+6
-0
未找到文件。
src/vs/code/electron-browser/processExplorer/processExplorerMain.ts
浏览文件 @
3f53efa5
...
...
@@ -7,7 +7,7 @@
import
'
vs/css!./media/processExplorer
'
;
import
{
listProcesses
,
ProcessItem
}
from
'
vs/base/node/ps
'
;
import
{
remote
,
webFrame
}
from
'
electron
'
;
import
{
remote
,
webFrame
,
ipcRenderer
}
from
'
electron
'
;
import
{
repeat
}
from
'
vs/base/common/strings
'
;
import
{
totalmem
}
from
'
os
'
;
import
product
from
'
vs/platform/node/product
'
;
...
...
@@ -17,6 +17,7 @@ import * as browser from 'vs/base/browser/browser';
import
*
as
platform
from
'
vs/base/common/platform
'
;
let
processList
:
any
[];
let
mapPidToWindowTitle
=
new
Map
<
number
,
string
>
();
function
getProcessList
(
rootProcess
:
ProcessItem
)
{
const
processes
:
any
[]
=
[];
...
...
@@ -33,8 +34,17 @@ function getProcessItem(processes: any[], item: ProcessItem, indent: number): vo
const
MB
=
1024
*
1024
;
let
name
=
item
.
name
;
if
(
isRoot
)
{
name
=
`
${
product
.
applicationName
}
main`
;
}
if
(
name
===
'
window
'
)
{
const
windowTitle
=
mapPidToWindowTitle
.
get
(
item
.
pid
);
name
=
windowTitle
!==
undefined
?
`
${
name
}
(
${
mapPidToWindowTitle
.
get
(
item
.
pid
)}
)`
:
name
;
}
// Format name with indent
const
name
=
isRoot
?
`
${
product
.
applicationName
}
main`
:
item
.
name
;
const
formattedName
=
isRoot
?
name
:
`
${
repeat
(
'
'
,
indent
)}
${
name
}
`
;
const
memory
=
process
.
platform
===
'
win32
'
?
item
.
mem
:
(
totalmem
()
*
(
item
.
mem
/
100
));
processes
.
push
({
...
...
@@ -154,18 +164,28 @@ export function startup(data: ProcessExplorerData): void {
applyStyles
(
data
.
styles
);
applyZoom
(
data
.
zoomLevel
);
setInterval
(()
=>
listProcesses
(
remote
.
process
.
pid
).
then
(
processes
=>
{
processList
=
getProcessList
(
processes
);
updateProcessInfo
(
processList
);
// Map window process pids to titles, annotate process names with this when rendering to distinguish between them
ipcRenderer
.
on
(
'
windowsInfoResponse
'
,
(
event
,
windows
)
=>
{
mapPidToWindowTitle
=
new
Map
<
number
,
string
>
();
windows
.
forEach
(
window
=>
mapPidToWindowTitle
.
set
(
window
.
pid
,
window
.
title
));
});
const
tableRows
=
document
.
getElementsByTagName
(
'
tr
'
);
for
(
let
i
=
0
;
i
<
tableRows
.
length
;
i
++
)
{
const
tableRow
=
tableRows
[
i
];
tableRow
.
addEventListener
(
'
contextmenu
'
,
(
e
)
=>
{
showContextMenu
(
e
);
});
}
}),
1200
);
setInterval
(()
=>
{
ipcRenderer
.
send
(
'
windowsInfoRequest
'
);
listProcesses
(
remote
.
process
.
pid
).
then
(
processes
=>
{
processList
=
getProcessList
(
processes
);
updateProcessInfo
(
processList
);
const
tableRows
=
document
.
getElementsByTagName
(
'
tr
'
);
for
(
let
i
=
0
;
i
<
tableRows
.
length
;
i
++
)
{
const
tableRow
=
tableRows
[
i
];
tableRow
.
addEventListener
(
'
contextmenu
'
,
(
e
)
=>
{
showContextMenu
(
e
);
});
}
});
},
1200
);
document
.
onkeydown
=
(
e
:
KeyboardEvent
)
=>
{
...
...
src/vs/platform/issue/electron-main/issueService.ts
浏览文件 @
3f53efa5
...
...
@@ -75,6 +75,12 @@ export class IssueService implements IIssueService {
}
openProcessExplorer
(
data
:
ProcessExplorerData
):
TPromise
<
void
>
{
ipcMain
.
on
(
'
windowsInfoRequest
'
,
event
=>
{
this
.
launchService
.
getMainProcessInfo
().
then
(
info
=>
{
event
.
sender
.
send
(
'
windowsInfoResponse
'
,
info
.
windows
);
});
});
// Create as singleton
if
(
!
this
.
_processExplorerWindow
)
{
const
position
=
this
.
getWindowPosition
(
BrowserWindow
.
getFocusedWindow
(),
800
,
300
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录