Updated winapi dependency
This commit is contained in:
parent
718151e3cb
commit
da01a3f8c2
4 changed files with 95 additions and 120 deletions
65
Cargo.lock
generated
65
Cargo.lock
generated
|
@ -697,15 +697,6 @@ dependencies = [
|
||||||
"rayon 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rayon 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "kernel32-sys"
|
|
||||||
version = "0.2.2"
|
|
||||||
source = "git+https://github.com/retep998/winapi-rs?branch=0.2#77588710a683e1a4ec085b0f3d6c8939ecc7f030"
|
|
||||||
dependencies = [
|
|
||||||
"winapi 0.2.8 (git+https://github.com/retep998/winapi-rs?branch=0.2)",
|
|
||||||
"winapi-build 0.1.1 (git+https://github.com/retep998/winapi-rs?branch=0.2)",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kernel32-sys"
|
name = "kernel32-sys"
|
||||||
version = "0.2.2"
|
version = "0.2.2"
|
||||||
|
@ -1186,7 +1177,6 @@ dependencies = [
|
||||||
"id3 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"id3 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"image 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"image 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"iron 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"iron 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"kernel32-sys 0.2.2 (git+https://github.com/retep998/winapi-rs?branch=0.2)",
|
|
||||||
"lewton 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"lewton 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"metaflac 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"metaflac 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
@ -1203,16 +1193,14 @@ dependencies = [
|
||||||
"serde 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"shell32-sys 0.1.1 (git+https://github.com/retep998/winapi-rs?branch=0.2)",
|
|
||||||
"simplelog 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"simplelog 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"staticfile 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"staticfile 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"toml 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"toml 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"typemap 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"typemap 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"unix-daemonize 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"unix-daemonize 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"url 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"url 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"user32-sys 0.2.0 (git+https://github.com/retep998/winapi-rs?branch=0.2)",
|
|
||||||
"uuid 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"uuid 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"winapi 0.2.8 (git+https://github.com/retep998/winapi-rs?branch=0.2)",
|
"winapi 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -1515,15 +1503,6 @@ dependencies = [
|
||||||
"url 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"url 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "shell32-sys"
|
|
||||||
version = "0.1.1"
|
|
||||||
source = "git+https://github.com/retep998/winapi-rs?branch=0.2#77588710a683e1a4ec085b0f3d6c8939ecc7f030"
|
|
||||||
dependencies = [
|
|
||||||
"winapi 0.2.8 (git+https://github.com/retep998/winapi-rs?branch=0.2)",
|
|
||||||
"winapi-build 0.1.1 (git+https://github.com/retep998/winapi-rs?branch=0.2)",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "shell32-sys"
|
name = "shell32-sys"
|
||||||
version = "0.1.1"
|
version = "0.1.1"
|
||||||
|
@ -1811,15 +1790,6 @@ dependencies = [
|
||||||
"url 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"url 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "user32-sys"
|
|
||||||
version = "0.2.0"
|
|
||||||
source = "git+https://github.com/retep998/winapi-rs?branch=0.2#77588710a683e1a4ec085b0f3d6c8939ecc7f030"
|
|
||||||
dependencies = [
|
|
||||||
"winapi 0.2.8 (git+https://github.com/retep998/winapi-rs?branch=0.2)",
|
|
||||||
"winapi-build 0.1.1 (git+https://github.com/retep998/winapi-rs?branch=0.2)",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "utf8-ranges"
|
name = "utf8-ranges"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
|
@ -1845,26 +1815,35 @@ name = "void"
|
||||||
version = "1.0.2"
|
version = "1.0.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "winapi"
|
|
||||||
version = "0.2.8"
|
|
||||||
source = "git+https://github.com/retep998/winapi-rs?branch=0.2#77588710a683e1a4ec085b0f3d6c8939ecc7f030"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "winapi"
|
name = "winapi"
|
||||||
version = "0.2.8"
|
version = "0.2.8"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "winapi-build"
|
name = "winapi"
|
||||||
version = "0.1.1"
|
version = "0.3.3"
|
||||||
source = "git+https://github.com/retep998/winapi-rs?branch=0.2#77588710a683e1a4ec085b0f3d6c8939ecc7f030"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
dependencies = [
|
||||||
|
"winapi-i686-pc-windows-gnu 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"winapi-x86_64-pc-windows-gnu 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "winapi-build"
|
name = "winapi-build"
|
||||||
version = "0.1.1"
|
version = "0.1.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "winapi-i686-pc-windows-gnu"
|
||||||
|
version = "0.3.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "winapi-x86_64-pc-windows-gnu"
|
||||||
|
version = "0.3.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ws2_32-sys"
|
name = "ws2_32-sys"
|
||||||
version = "0.2.1"
|
version = "0.2.1"
|
||||||
|
@ -1962,7 +1941,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
"checksum itoa 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ae3088ea4baeceb0284ee9eea42f591226e6beaecf65373e41b38d95a1b8e7a1"
|
"checksum itoa 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ae3088ea4baeceb0284ee9eea42f591226e6beaecf65373e41b38d95a1b8e7a1"
|
||||||
"checksum itoa 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8324a32baf01e2ae060e9de58ed0bc2320c9a2833491ee36cd3b4c414de4db8c"
|
"checksum itoa 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8324a32baf01e2ae060e9de58ed0bc2320c9a2833491ee36cd3b4c414de4db8c"
|
||||||
"checksum jpeg-decoder 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2805ccb10ffe4d10e06ef68a158ff94c255211ecbae848fbde2146b098f93ce7"
|
"checksum jpeg-decoder 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2805ccb10ffe4d10e06ef68a158ff94c255211ecbae848fbde2146b098f93ce7"
|
||||||
"checksum kernel32-sys 0.2.2 (git+https://github.com/retep998/winapi-rs?branch=0.2)" = "<none>"
|
|
||||||
"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
|
"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
|
||||||
"checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a"
|
"checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a"
|
||||||
"checksum lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73"
|
"checksum lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73"
|
||||||
|
@ -2051,7 +2029,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
"checksum serde_json 0.8.6 (registry+https://github.com/rust-lang/crates.io-index)" = "67f7d2e9edc3523a9c8ec8cd6ec481b3a27810aafee3e625d311febd3e656b4c"
|
"checksum serde_json 0.8.6 (registry+https://github.com/rust-lang/crates.io-index)" = "67f7d2e9edc3523a9c8ec8cd6ec481b3a27810aafee3e625d311febd3e656b4c"
|
||||||
"checksum serde_json 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7cf5b0b5b4bd22eeecb7e01ac2e1225c7ef5e4272b79ee28a8392a8c8489c839"
|
"checksum serde_json 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7cf5b0b5b4bd22eeecb7e01ac2e1225c7ef5e4272b79ee28a8392a8c8489c839"
|
||||||
"checksum serde_urlencoded 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ce0fd303af908732989354c6f02e05e2e6d597152870f2c6990efb0577137480"
|
"checksum serde_urlencoded 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ce0fd303af908732989354c6f02e05e2e6d597152870f2c6990efb0577137480"
|
||||||
"checksum shell32-sys 0.1.1 (git+https://github.com/retep998/winapi-rs?branch=0.2)" = "<none>"
|
|
||||||
"checksum shell32-sys 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "72f20b8f3c060374edb8046591ba28f62448c369ccbdc7b02075103fb3a9e38d"
|
"checksum shell32-sys 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "72f20b8f3c060374edb8046591ba28f62448c369ccbdc7b02075103fb3a9e38d"
|
||||||
"checksum simplelog 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "24b615b1a3cc51ffa565d9a1d0cfcc49fe7d64737ada84eca284cddb0292d125"
|
"checksum simplelog 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "24b615b1a3cc51ffa565d9a1d0cfcc49fe7d64737ada84eca284cddb0292d125"
|
||||||
"checksum siphasher 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0df90a788073e8d0235a67e50441d47db7c8ad9debd91cbf43736a2a92d36537"
|
"checksum siphasher 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0df90a788073e8d0235a67e50441d47db7c8ad9debd91cbf43736a2a92d36537"
|
||||||
|
@ -2087,15 +2064,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
"checksum untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f392d7819dbe58833e26872f5f6f0d68b7bbbe90fc3667e98731c4a15ad9a7ae"
|
"checksum untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f392d7819dbe58833e26872f5f6f0d68b7bbbe90fc3667e98731c4a15ad9a7ae"
|
||||||
"checksum url 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fa35e768d4daf1d85733418a49fb42e10d7f633e394fccab4ab7aba897053fe2"
|
"checksum url 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fa35e768d4daf1d85733418a49fb42e10d7f633e394fccab4ab7aba897053fe2"
|
||||||
"checksum urlencoded 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8c28708636d6f7298a53b1cdb6af40f1ab523209a7cb83cf4d41b3ebc671d319"
|
"checksum urlencoded 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8c28708636d6f7298a53b1cdb6af40f1ab523209a7cb83cf4d41b3ebc671d319"
|
||||||
"checksum user32-sys 0.2.0 (git+https://github.com/retep998/winapi-rs?branch=0.2)" = "<none>"
|
|
||||||
"checksum utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "662fab6525a98beff2921d7f61a39e7d59e0b425ebc7d0d9e66d316e55124122"
|
"checksum utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "662fab6525a98beff2921d7f61a39e7d59e0b425ebc7d0d9e66d316e55124122"
|
||||||
"checksum uuid 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcc7e3b898aa6f6c08e5295b6c89258d1331e9ac578cc992fb818759951bdc22"
|
"checksum uuid 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcc7e3b898aa6f6c08e5295b6c89258d1331e9ac578cc992fb818759951bdc22"
|
||||||
"checksum vcpkg 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9e0a7d8bed3178a8fb112199d466eeca9ed09a14ba8ad67718179b4fd5487d0b"
|
"checksum vcpkg 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9e0a7d8bed3178a8fb112199d466eeca9ed09a14ba8ad67718179b4fd5487d0b"
|
||||||
"checksum version_check 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6b772017e347561807c1aa192438c5fd74242a670a6cffacc40f2defd1dc069d"
|
"checksum version_check 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6b772017e347561807c1aa192438c5fd74242a670a6cffacc40f2defd1dc069d"
|
||||||
"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
|
"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
|
||||||
"checksum winapi 0.2.8 (git+https://github.com/retep998/winapi-rs?branch=0.2)" = "<none>"
|
|
||||||
"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
|
"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
|
||||||
"checksum winapi-build 0.1.1 (git+https://github.com/retep998/winapi-rs?branch=0.2)" = "<none>"
|
"checksum winapi 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b09fb3b6f248ea4cd42c9a65113a847d612e17505d6ebd1f7357ad68a8bf8693"
|
||||||
"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
|
"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
|
||||||
|
"checksum winapi-i686-pc-windows-gnu 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ec6667f60c23eca65c561e63a13d81b44234c2e38a6b6c959025ee907ec614cc"
|
||||||
|
"checksum winapi-x86_64-pc-windows-gnu 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "98f12c52b2630cd05d2c3ffd8e008f7f48252c042b4871c72aed9dc733b96668"
|
||||||
"checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e"
|
"checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e"
|
||||||
"checksum xdg 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a66b7c2281ebde13cf4391d70d4c7e5946c3c25e72a7b859ca8f677dcd0b0c61"
|
"checksum xdg 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a66b7c2281ebde13cf4391d70d4c7e5946c3c25e72a7b859ca8f677dcd0b0c61"
|
||||||
|
|
|
@ -44,11 +44,11 @@ version = "0.12.0"
|
||||||
features = ["bundled"]
|
features = ["bundled"]
|
||||||
|
|
||||||
[target.'cfg(windows)'.dependencies]
|
[target.'cfg(windows)'.dependencies]
|
||||||
winapi = { git = "https://github.com/retep998/winapi-rs", branch="0.2" }
|
|
||||||
kernel32-sys = { git = "https://github.com/retep998/winapi-rs", branch="0.2" }
|
|
||||||
shell32-sys = { git = "https://github.com/retep998/winapi-rs", branch="0.2" }
|
|
||||||
user32-sys = { git = "https://github.com/retep998/winapi-rs", branch="0.2" }
|
|
||||||
uuid = "0.5.0"
|
uuid = "0.5.0"
|
||||||
|
|
||||||
|
[target.'cfg(windows)'.dependencies.winapi]
|
||||||
|
version = "0.3.3"
|
||||||
|
features = ["winuser", "libloaderapi", "shellapi", "errhandlingapi"]
|
||||||
|
|
||||||
[target.'cfg(unix)'.dependencies]
|
[target.'cfg(unix)'.dependencies]
|
||||||
unix-daemonize = "0.1.2"
|
unix-daemonize = "0.1.2"
|
||||||
|
|
|
@ -43,12 +43,6 @@ extern crate simplelog;
|
||||||
extern crate uuid;
|
extern crate uuid;
|
||||||
#[cfg(windows)]
|
#[cfg(windows)]
|
||||||
extern crate winapi;
|
extern crate winapi;
|
||||||
#[cfg(windows)]
|
|
||||||
extern crate kernel32;
|
|
||||||
#[cfg(windows)]
|
|
||||||
extern crate shell32;
|
|
||||||
#[cfg(windows)]
|
|
||||||
extern crate user32;
|
|
||||||
|
|
||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
extern crate unix_daemonize;
|
extern crate unix_daemonize;
|
||||||
|
|
|
@ -1,16 +1,13 @@
|
||||||
use kernel32;
|
|
||||||
use shell32;
|
|
||||||
use std;
|
use std;
|
||||||
use std::ffi::OsStr;
|
use std::ffi::OsStr;
|
||||||
use std::os::windows::ffi::OsStrExt;
|
use std::os::windows::ffi::OsStrExt;
|
||||||
use user32;
|
|
||||||
use uuid;
|
use uuid;
|
||||||
use winapi;
|
use winapi;
|
||||||
|
|
||||||
const IDI_POLARIS_TRAY: isize = 0x102;
|
const IDI_POLARIS_TRAY: isize = 0x102;
|
||||||
const UID_NOTIFICATION_ICON: u32 = 0;
|
const UID_NOTIFICATION_ICON: u32 = 0;
|
||||||
const MESSAGE_NOTIFICATION_ICON: u32 = winapi::WM_USER + 1;
|
const MESSAGE_NOTIFICATION_ICON: u32 = winapi::um::winuser::WM_USER + 1;
|
||||||
const MESSAGE_NOTIFICATION_ICON_QUIT: u32 = winapi::WM_USER + 2;
|
const MESSAGE_NOTIFICATION_ICON_QUIT: u32 = winapi::um::winuser::WM_USER + 2;
|
||||||
|
|
||||||
pub trait ToWin {
|
pub trait ToWin {
|
||||||
type Out;
|
type Out;
|
||||||
|
@ -29,14 +26,14 @@ impl<'a> ToWin for &'a str {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ToWin for uuid::Uuid {
|
impl ToWin for uuid::Uuid {
|
||||||
type Out = winapi::GUID;
|
type Out = winapi::shared::guiddef::GUID;
|
||||||
|
|
||||||
fn to_win(&self) -> Self::Out {
|
fn to_win(&self) -> Self::Out {
|
||||||
let bytes = self.as_bytes();
|
let bytes = self.as_bytes();
|
||||||
let end = [bytes[8], bytes[9], bytes[10], bytes[11], bytes[12], bytes[13], bytes[14],
|
let end = [bytes[8], bytes[9], bytes[10], bytes[11], bytes[12], bytes[13], bytes[14],
|
||||||
bytes[15]];
|
bytes[15]];
|
||||||
|
|
||||||
winapi::GUID {
|
winapi::shared::guiddef::GUID {
|
||||||
Data1: ((bytes[0] as u32) << 24 | (bytes[1] as u32) << 16 | (bytes[2] as u32) << 8 |
|
Data1: ((bytes[0] as u32) << 24 | (bytes[1] as u32) << 16 | (bytes[2] as u32) << 8 |
|
||||||
(bytes[3] as u32)),
|
(bytes[3] as u32)),
|
||||||
Data2: ((bytes[4] as u16) << 8 | (bytes[5] as u16)),
|
Data2: ((bytes[4] as u16) << 8 | (bytes[5] as u16)),
|
||||||
|
@ -51,12 +48,19 @@ pub trait Constructible {
|
||||||
fn new() -> Self::Out;
|
fn new() -> Self::Out;
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Constructible for winapi::NOTIFYICONDATAW {
|
impl Constructible for winapi::um::shellapi::NOTIFYICONDATAW {
|
||||||
type Out = winapi::NOTIFYICONDATAW;
|
type Out = winapi::um::shellapi::NOTIFYICONDATAW;
|
||||||
|
|
||||||
fn new() -> Self::Out {
|
fn new() -> Self::Out {
|
||||||
winapi::NOTIFYICONDATAW {
|
|
||||||
cbSize: std::mem::size_of::<winapi::NOTIFYICONDATAW>() as u32,
|
let mut version_union: winapi::um::shellapi::NOTIFYICONDATAW_u = unsafe { std::mem::zeroed() };
|
||||||
|
unsafe {
|
||||||
|
let version = version_union.uVersion_mut();
|
||||||
|
*version = winapi::um::shellapi::NOTIFYICON_VERSION_4;
|
||||||
|
}
|
||||||
|
|
||||||
|
winapi::um::shellapi::NOTIFYICONDATAW {
|
||||||
|
cbSize: std::mem::size_of::<winapi::um::shellapi::NOTIFYICONDATAW>() as u32,
|
||||||
hWnd: std::ptr::null_mut(),
|
hWnd: std::ptr::null_mut(),
|
||||||
uFlags: 0,
|
uFlags: 0,
|
||||||
guidItem: uuid::Uuid::nil().to_win(),
|
guidItem: uuid::Uuid::nil().to_win(),
|
||||||
|
@ -67,7 +71,7 @@ impl Constructible for winapi::NOTIFYICONDATAW {
|
||||||
dwState: 0,
|
dwState: 0,
|
||||||
dwStateMask: 0,
|
dwStateMask: 0,
|
||||||
szInfo: [0; 256],
|
szInfo: [0; 256],
|
||||||
uTimeout: winapi::NOTIFYICON_VERSION_4,
|
u: version_union,
|
||||||
szInfoTitle: [0; 64],
|
szInfoTitle: [0; 64],
|
||||||
dwInfoFlags: 0,
|
dwInfoFlags: 0,
|
||||||
hBalloonIcon: std::ptr::null_mut(),
|
hBalloonIcon: std::ptr::null_mut(),
|
||||||
|
@ -75,40 +79,40 @@ impl Constructible for winapi::NOTIFYICONDATAW {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn create_window() -> Option<winapi::HWND> {
|
fn create_window() -> Option<winapi::shared::windef::HWND> {
|
||||||
|
|
||||||
let class_name = "Polaris-class".to_win();
|
let class_name = "Polaris-class".to_win();
|
||||||
let window_name = "Polaris-window".to_win();
|
let window_name = "Polaris-window".to_win();
|
||||||
|
|
||||||
unsafe {
|
unsafe {
|
||||||
let module_handle = kernel32::GetModuleHandleW(std::ptr::null());
|
let module_handle = winapi::um::libloaderapi::GetModuleHandleW(std::ptr::null());
|
||||||
let wnd = winapi::WNDCLASSW {
|
let wnd = winapi::um::winuser::WNDCLASSW {
|
||||||
style: 0,
|
style: 0,
|
||||||
lpfnWndProc: Some(window_proc),
|
lpfnWndProc: Some(window_proc),
|
||||||
hInstance: module_handle,
|
hInstance: module_handle,
|
||||||
hIcon: std::ptr::null_mut(),
|
hIcon: std::ptr::null_mut(),
|
||||||
hCursor: std::ptr::null_mut(),
|
hCursor: std::ptr::null_mut(),
|
||||||
lpszClassName: class_name.as_ptr(),
|
lpszClassName: class_name.as_ptr(),
|
||||||
hbrBackground: winapi::COLOR_WINDOW as winapi::HBRUSH,
|
hbrBackground: winapi::um::winuser::COLOR_WINDOW as winapi::shared::windef::HBRUSH,
|
||||||
lpszMenuName: std::ptr::null_mut(),
|
lpszMenuName: std::ptr::null_mut(),
|
||||||
cbClsExtra: 0,
|
cbClsExtra: 0,
|
||||||
cbWndExtra: 0,
|
cbWndExtra: 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
let atom = user32::RegisterClassW(&wnd);
|
let atom = winapi::um::winuser::RegisterClassW(&wnd);
|
||||||
if atom == 0 {
|
if atom == 0 {
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
|
|
||||||
let window_handle = user32::CreateWindowExW(0,
|
let window_handle = winapi::um::winuser::CreateWindowExW(0,
|
||||||
atom as winapi::LPCWSTR,
|
atom as winapi::shared::ntdef::LPCWSTR,
|
||||||
window_name.as_ptr(),
|
window_name.as_ptr(),
|
||||||
winapi::WS_DISABLED,
|
winapi::um::winuser::WS_DISABLED,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
user32::GetDesktopWindow(),
|
winapi::um::winuser::GetDesktopWindow(),
|
||||||
std::ptr::null_mut(),
|
std::ptr::null_mut(),
|
||||||
std::ptr::null_mut(),
|
std::ptr::null_mut(),
|
||||||
std::ptr::null_mut());
|
std::ptr::null_mut());
|
||||||
|
@ -121,22 +125,22 @@ fn create_window() -> Option<winapi::HWND> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn add_notification_icon(window: winapi::HWND) {
|
fn add_notification_icon(window: winapi::shared::windef::HWND) {
|
||||||
|
|
||||||
let mut tooltip = [0 as winapi::WCHAR; 128];
|
let mut tooltip = [0 as winapi::um::winnt::WCHAR; 128];
|
||||||
for (&x, p) in "Polaris".to_win().iter().zip(tooltip.iter_mut()) {
|
for (&x, p) in "Polaris".to_win().iter().zip(tooltip.iter_mut()) {
|
||||||
*p = x;
|
*p = x;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe {
|
unsafe {
|
||||||
let module = kernel32::GetModuleHandleW(std::ptr::null());
|
let module = winapi::um::libloaderapi::GetModuleHandleW(std::ptr::null());
|
||||||
let icon = user32::LoadIconW(module, std::mem::transmute(IDI_POLARIS_TRAY));
|
let icon = winapi::um::winuser::LoadIconW(module, std::mem::transmute(IDI_POLARIS_TRAY));
|
||||||
let mut flags = winapi::NIF_MESSAGE | winapi::NIF_TIP;
|
let mut flags = winapi::um::shellapi::NIF_MESSAGE | winapi::um::shellapi::NIF_TIP;
|
||||||
if !icon.is_null() {
|
if !icon.is_null() {
|
||||||
flags |= winapi::NIF_ICON;
|
flags |= winapi::um::shellapi::NIF_ICON;
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut icon_data = winapi::NOTIFYICONDATAW::new();
|
let mut icon_data = winapi::um::shellapi::NOTIFYICONDATAW::new();
|
||||||
icon_data.hWnd = window;
|
icon_data.hWnd = window;
|
||||||
icon_data.uID = UID_NOTIFICATION_ICON;
|
icon_data.uID = UID_NOTIFICATION_ICON;
|
||||||
icon_data.uFlags = flags;
|
icon_data.uFlags = flags;
|
||||||
|
@ -144,58 +148,58 @@ fn add_notification_icon(window: winapi::HWND) {
|
||||||
icon_data.uCallbackMessage = MESSAGE_NOTIFICATION_ICON;
|
icon_data.uCallbackMessage = MESSAGE_NOTIFICATION_ICON;
|
||||||
icon_data.szTip = tooltip;
|
icon_data.szTip = tooltip;
|
||||||
|
|
||||||
shell32::Shell_NotifyIconW(winapi::NIM_ADD, &mut icon_data);
|
winapi::um::shellapi::Shell_NotifyIconW(winapi::um::shellapi::NIM_ADD, &mut icon_data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn remove_notification_icon(window: winapi::HWND) {
|
fn remove_notification_icon(window: winapi::shared::windef::HWND) {
|
||||||
let mut icon_data = winapi::NOTIFYICONDATAW::new();
|
let mut icon_data = winapi::um::shellapi::NOTIFYICONDATAW::new();
|
||||||
icon_data.hWnd = window;
|
icon_data.hWnd = window;
|
||||||
icon_data.uID = UID_NOTIFICATION_ICON;
|
icon_data.uID = UID_NOTIFICATION_ICON;
|
||||||
unsafe {
|
unsafe {
|
||||||
shell32::Shell_NotifyIconW(winapi::NIM_DELETE, &mut icon_data);
|
winapi::um::shellapi::Shell_NotifyIconW(winapi::um::shellapi::NIM_DELETE, &mut icon_data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn open_notification_context_menu(window: winapi::HWND) {
|
fn open_notification_context_menu(window: winapi::shared::windef::HWND) {
|
||||||
info!("Opening notification icon context menu");
|
info!("Opening notification icon context menu");
|
||||||
let quit_string = "Quit Polaris".to_win();
|
let quit_string = "Quit Polaris".to_win();
|
||||||
|
|
||||||
unsafe {
|
unsafe {
|
||||||
let context_menu = user32::CreatePopupMenu();
|
let context_menu = winapi::um::winuser::CreatePopupMenu();
|
||||||
if context_menu.is_null() {
|
if context_menu.is_null() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
user32::InsertMenuW(context_menu,
|
winapi::um::winuser::InsertMenuW(context_menu,
|
||||||
0,
|
0,
|
||||||
winapi::winuser::MF_STRING,
|
winapi::um::winuser::MF_STRING,
|
||||||
MESSAGE_NOTIFICATION_ICON_QUIT as u64,
|
MESSAGE_NOTIFICATION_ICON_QUIT as usize,
|
||||||
quit_string.as_ptr());
|
quit_string.as_ptr());
|
||||||
|
|
||||||
let mut cursor_position = winapi::POINT { x: 0, y: 0 };
|
let mut cursor_position = winapi::shared::windef::POINT { x: 0, y: 0 };
|
||||||
user32::GetCursorPos(&mut cursor_position);
|
winapi::um::winuser::GetCursorPos(&mut cursor_position);
|
||||||
|
|
||||||
user32::SetForegroundWindow(window);
|
winapi::um::winuser::SetForegroundWindow(window);
|
||||||
let flags = winapi::winuser::TPM_RIGHTALIGN | winapi::winuser::TPM_BOTTOMALIGN |
|
let flags = winapi::um::winuser::TPM_RIGHTALIGN | winapi::um::winuser::TPM_BOTTOMALIGN |
|
||||||
winapi::winuser::TPM_RIGHTBUTTON;
|
winapi::um::winuser::TPM_RIGHTBUTTON;
|
||||||
user32::TrackPopupMenu(context_menu,
|
winapi::um::winuser::TrackPopupMenu(context_menu,
|
||||||
flags,
|
flags,
|
||||||
cursor_position.x,
|
cursor_position.x,
|
||||||
cursor_position.y,
|
cursor_position.y,
|
||||||
0,
|
0,
|
||||||
window,
|
window,
|
||||||
std::ptr::null_mut());
|
std::ptr::null_mut());
|
||||||
user32::PostMessageW(window, 0, 0, 0);
|
winapi::um::winuser::PostMessageW(window, 0, 0, 0);
|
||||||
|
|
||||||
info!("Closing notification context menu");
|
info!("Closing notification context menu");
|
||||||
user32::DestroyMenu(context_menu);
|
winapi::um::winuser::DestroyMenu(context_menu);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn quit(window: winapi::HWND) {
|
fn quit(window: winapi::shared::windef::HWND) {
|
||||||
info!("Shutting down UI");
|
info!("Shutting down UI");
|
||||||
unsafe {
|
unsafe {
|
||||||
user32::PostMessageW(window, winapi::winuser::WM_CLOSE, 0, 0);
|
winapi::um::winuser::PostMessageW(window, winapi::um::winuser::WM_CLOSE, 0, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -204,53 +208,53 @@ pub fn run() {
|
||||||
|
|
||||||
create_window().expect("Could not initialize window");
|
create_window().expect("Could not initialize window");
|
||||||
|
|
||||||
let mut message = winapi::MSG {
|
let mut message = winapi::um::winuser::MSG {
|
||||||
hwnd: std::ptr::null_mut(),
|
hwnd: std::ptr::null_mut(),
|
||||||
message: 0,
|
message: 0,
|
||||||
wParam: 0,
|
wParam: 0,
|
||||||
lParam: 0,
|
lParam: 0,
|
||||||
time: 0,
|
time: 0,
|
||||||
pt: winapi::POINT { x: 0, y: 0 },
|
pt: winapi::shared::windef::POINT { x: 0, y: 0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
let status: i32;
|
let status: i32;
|
||||||
unsafe {
|
unsafe {
|
||||||
status = user32::GetMessageW(&mut message, std::ptr::null_mut(), 0, 0);
|
status = winapi::um::winuser::GetMessageW(&mut message, std::ptr::null_mut(), 0, 0);
|
||||||
if status == -1 {
|
if status == -1 {
|
||||||
panic!("GetMessageW error: {}", kernel32::GetLastError());
|
panic!("GetMessageW error: {}", winapi::um::errhandlingapi::GetLastError());
|
||||||
}
|
}
|
||||||
if status == 0 {
|
if status == 0 {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
user32::TranslateMessage(&message);
|
winapi::um::winuser::TranslateMessage(&message);
|
||||||
user32::DispatchMessageW(&message);
|
winapi::um::winuser::DispatchMessageW(&message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub unsafe extern "system" fn window_proc(window: winapi::HWND,
|
pub unsafe extern "system" fn window_proc(window: winapi::shared::windef::HWND,
|
||||||
msg: winapi::UINT,
|
msg: winapi::shared::minwindef::UINT,
|
||||||
w_param: winapi::WPARAM,
|
w_param: winapi::shared::minwindef::WPARAM,
|
||||||
l_param: winapi::LPARAM)
|
l_param: winapi::shared::minwindef::LPARAM)
|
||||||
-> winapi::LRESULT {
|
-> winapi::shared::minwindef::LRESULT {
|
||||||
match msg {
|
match msg {
|
||||||
|
|
||||||
winapi::winuser::WM_CREATE => {
|
winapi::um::winuser::WM_CREATE => {
|
||||||
add_notification_icon(window);
|
add_notification_icon(window);
|
||||||
}
|
}
|
||||||
|
|
||||||
MESSAGE_NOTIFICATION_ICON => {
|
MESSAGE_NOTIFICATION_ICON => {
|
||||||
match winapi::LOWORD(l_param as winapi::DWORD) as u32 {
|
match winapi::shared::minwindef::LOWORD(l_param as winapi::shared::minwindef::DWORD) as u32 {
|
||||||
winapi::winuser::WM_RBUTTONUP => {
|
winapi::um::winuser::WM_RBUTTONUP => {
|
||||||
open_notification_context_menu(window);
|
open_notification_context_menu(window);
|
||||||
}
|
}
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
winapi::winuser::WM_COMMAND => {
|
winapi::um::winuser::WM_COMMAND => {
|
||||||
match winapi::LOWORD(w_param as winapi::DWORD) as u32 {
|
match winapi::shared::minwindef::LOWORD(w_param as winapi::shared::minwindef::DWORD) as u32 {
|
||||||
MESSAGE_NOTIFICATION_ICON_QUIT => {
|
MESSAGE_NOTIFICATION_ICON_QUIT => {
|
||||||
quit(window);
|
quit(window);
|
||||||
}
|
}
|
||||||
|
@ -258,13 +262,13 @@ pub unsafe extern "system" fn window_proc(window: winapi::HWND,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
winapi::winuser::WM_DESTROY => {
|
winapi::um::winuser::WM_DESTROY => {
|
||||||
remove_notification_icon(window);
|
remove_notification_icon(window);
|
||||||
user32::PostQuitMessage(0);
|
winapi::um::winuser::PostQuitMessage(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
_ => (),
|
_ => (),
|
||||||
};
|
};
|
||||||
|
|
||||||
return user32::DefWindowProcW(window, msg, w_param, l_param);
|
return winapi::um::winuser::DefWindowProcW(window, msg, w_param, l_param);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue