āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻāĻŋ āĻāĻŽāĻāĻāĻāĻŋ āĻ˛āĻžāĻāĻ¸ā§āĻ¨ā§āĻ¸ā§āĻ° āĻ āĻ§ā§āĻ¨ā§ āĻāĻāĻāĻŋ āĻŽāĻ°āĻŋāĻāĻž āĻā§āĻ°ā§āĻ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻĄāĻŋāĻāĻžāĻāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻ¯āĻž āĻāĻāĻāĻžāĻŦā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§:
[āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻž] windows = "0.2.1" [āĻŦāĻŋāĻ˛ā§āĻĄ-āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻž] windows = "0.2.1"āĻāĻ° āĻĒāĻ°ā§, build.rs āĻŦāĻŋāĻ˛ā§āĻĄ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻā§, āĻāĻĒāĻ¨āĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻŽāĻĄāĻŋāĻāĻ˛āĻā§āĻ˛āĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨:
fn main() {
āĻāĻžāĻ¨āĻžāĻ˛āĻž ::āĻŦāĻŋāĻ˛ā§āĻĄ!(
windows::data::xml::dom::*
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject}
windows::win32::windows_programming::CloseHandle
);
}
āĻāĻĒāĻ˛āĻŦā§āĻ§ āĻŽāĻĄāĻŋāĻāĻ˛ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻĄāĻā§āĻŽā§āĻ¨ā§āĻā§āĻļāĻ¨ āĻĒā§āĻ°āĻāĻžāĻļāĻŋāĻ¤ āĻšāĻ¯āĻŧ docs.rs.
āĻā§āĻĄ āĻāĻĻāĻžāĻšāĻ°āĻŖ:
āĻŽā§āĻĄ āĻŦāĻžāĻāĻ§āĻžāĻ {
::windows::include_bindings!();
}
āĻŦāĻžāĻāĻ§āĻžāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨::{
windows::data::xml::dom::*,
windows::win32::system_services::{CreateEventW, SetEvent, WaitForSingleObject},
windows::win32::windows_programming::CloseHandle,
};
fn main() -> windows::Result {
let doc = XmlDocument::new()?;
doc.load_xml("āĻšā§āĻ¯āĻžāĻ˛ā§ āĻāĻ¯āĻŧāĻžāĻ°ā§āĻ˛ā§āĻĄ")?;
āĻ¯āĻžāĻ āĻ°ā§āĻ = doc.document_element()?;
assert!(root.node_name()? == "html");
assert!(root.inner_text()? == "āĻšā§āĻ¯āĻžāĻ˛ā§ āĻāĻ¯āĻŧāĻžāĻ°ā§āĻ˛ā§āĻĄ");
āĻ
āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻ {
āĻ˛ā§āĻ āĻāĻā§āĻ¨ā§āĻ = CreateEventW(
std::ptr::null_mut(),
true.into(),
false.into(),
std::ptr::null(),
);
āĻ¸ā§āĻ āĻāĻā§āĻ¨ā§āĻ(āĻāĻā§āĻ¨ā§āĻ) āĻ āĻŋāĻ āĻāĻā§()?;
WaitForSingleObject(āĻāĻā§āĻ¨ā§āĻ, 0);
CloseHandle(event).ok()?;
}
āĻ āĻŋāĻ āĻāĻā§(())
}
āĻāĻŋāĻā§ āĻĢāĻžāĻāĻļāĻ¨ āĻāĻ˛ āĻ āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻžāĻ°āĻŖ āĻāĻ āĻĢāĻžāĻāĻļāĻ¨āĻā§āĻ˛āĻŋāĻā§ āĻ°āĻžāĻ¸ā§āĻ āĻāĻ¨āĻā§āĻ¨āĻļāĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻĒ āĻāĻžāĻāĻ¯āĻŧā§ āĻ¨āĻž āĻāĻ°ā§āĻ āĻĻā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧāĨ¤ āĻā§āĻ°ā§āĻ āĻāĻāĻ āĻ¨ā§āĻ¤āĻŋāĻ¤ā§ āĻĄāĻŋāĻāĻžāĻāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤ libc, āĻ¯āĻž libc āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻŽā§āĻ˛āĻŋāĻ āĻā§āĻ°ā§āĻ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°ā§ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻ¸ā§āĻ°āĻā§āĻˇāĻŋāĻ¤ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ āĻ¸āĻš āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖā§āĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻšāĻ¯āĻŧāĨ¤
āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻāĻŋ āĻāĻžāĻ āĻžāĻŽā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ Win32 āĻŽā§āĻāĻžāĻĄā§āĻāĻž āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ, āĻ¯āĻž āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻŋāĻ āĻāĻžāĻˇāĻžāĻ° āĻāĻ¨ā§āĻ¯ API āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ¸āĻšāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĄāĻŋāĻāĻžāĻāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ, āĻ¯āĻž āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§ āĻŽā§āĻāĻžāĻĄā§āĻāĻž āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ - āĻ¸āĻŋ#/āĻāĻāĻ¨32. āĻŽāĻžāĻāĻā§āĻ°ā§āĻ¸āĻĢāĻāĻ āĻāĻžāĻ āĻļā§āĻ°ā§ āĻāĻ°āĻžāĻ° āĻā§āĻˇāĻŖāĻž āĻĻāĻŋāĻ¯āĻŧā§āĻā§ C++ āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ, āĻ¯āĻž āĻāĻāĻāĻŋ āĻāĻ§ā§āĻ¨āĻŋāĻ āĻļā§āĻ˛ā§ āĻāĻžāĻˇāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĨ¤
āĻāĻ¤ā§āĻ¸: linux.org.ru