เชฎเชพเช‡เช•เซเชฐเซ‹เชธเซ‹เชซเซเชŸเซ‡ Windows API เชฎเชพเชŸเซ‡ เชธเชคเซเชคเชพเชตเชพเชฐ เชฐเชธเซเชŸ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เชฌเชนเชพเชฐ เชชเชพเชกเซ€ เช›เซ‡

เชชเซเชธเซเชคเช•เชพเชฒเชฏเชจเซ‡ MIT เชฒเชพเชฏเชธเชจเซเชธ เชนเซ‡เช เชณ เชฐเชธเซเชŸ เช•เซเชฐเซ‡เชŸ เชคเชฐเซ€เช•เซ‡ เชกเชฟเชเชพเช‡เชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡, เชœเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช† เชฐเซ€เชคเซ‡ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡:

[dependencies] windows = "0.2.1"

[build-dependencies] 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");
เชญเชพเชฐเชชเซ‚เชฐเซเชตเช•!(root.inner_text()? == "เชนเซ‡เชฒเซ‹ เชตเชฐเซเชฒเซเชก");

เช…เชธเซเชฐเช•เซเชทเชฟเชค {
เชšเชพเชฒเซ‹ เช‡เชตเซ‡เชจเซเชŸ = CreateEventW(
std::ptr::null_mut(),
true.into(),
false.into(),
std::ptr::null(),
);

เชธเซ‡เชŸเช‡เชตเซ‡เชจเซเชŸ(เช‡เชตเซ‡เชจเซเชŸ).เช“เช•เซ‡()?;
WaitForSingleObject(เช‡เชตเซ‡เชจเซเชŸ, 0);
เช•เซเชฒเซ‹เชเชนเซ‡เชจเซเชกเชฒ(เช‡เชตเซ‡เชจเซเชŸ).เช“เช•เซ‡()?;
}

เชฌเชฐเชพเชฌเชฐ(())
}

เช•เซ‡เชŸเชฒเชพเช• เชซเช‚เช•เซเชถเชจ เช•เซ‹เชฒเซเชธ เช…เชธเซเชฐเช•เซเชทเชฟเชค เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เช† เชซเช‚เช•เซเชถเชจเซเชธ เชคเซ‡เชฎเชจเซ‡ เชฐเชธเซเชŸ เช•เชจเซเชตเซ‡เชจเซเชถเชจเชฎเชพเช‚ เช…เชจเซเช•เซ‚เชฒเชฟเชค เช•เชฐเซเชฏเชพ เชตเชฟเชจเชพ, เชœเซ‡เชฎ เช›เซ‡ เชคเซ‡เชฎ เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช•เซเชฐเซ‡เชŸ เชธเชฎเชพเชจ เชธเชฟเชฆเซเชงเชพเช‚เชค เชชเชฐ เชฐเชšเชพเชฏเซ‡เชฒ เช›เซ‡. libc, เชœเซ‡ libc เชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฎเซ‚เชณเชญเซ‚เชค เช•เซเชฐเซ‡เชŸ เชคเชฐเซ€เช•เซ‡ เชธเซ‡เชตเชพ เช†เชชเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชธเซเชฐเช•เซเชทเชฟเชค เชˆเชจเซเชŸเชฐเชซเซ‡เชธ เชธเชพเชฅเซ‡ เชฒเชพเชˆเชฌเซเชฐเซ‡เชฐเซ€เช“ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡เชจเชพ เช†เชงเชพเชฐ เชคเชฐเซ€เช•เซ‡ เชฅเชพเชฏ เช›เซ‡.


เช† เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชฎเชพเชณเช–เชพเชฎเชพเช‚ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹ Win32 เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ, เชœเซ‡ เชตเชฟเชตเชฟเชง เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชญเชพเชทเชพเช“ เชฎเชพเชŸเซ‡ API เชฌเชจเชพเชตเชตเชพเชจเซเช‚ เชธเชฐเชณ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชฐเชšเชพเชฏเซ‡เชฒ เช›เซ‡. เชฌเซ€เชœเซ€ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€, เชœเซ‡ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเชพ เชชเซเชฐเชฅเชฎ เชคเชฌเช•เซเช•เชพเชฎเชพเช‚ เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเชพ เช†เชงเชพเชฐเซ‡ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€ - C#/Win32. เชฎเชพเช‡เช•เซเชฐเซ‹เชธเซ‹เชซเซเชŸเซ‡ เชชเชฃ เช•เชพเชฎ เชถเชฐเซ‚ เช•เชฐเชตเชพเชจเซ€ เชœเชพเชนเซ‡เชฐเชพเชค เช•เชฐเซ€ เชนเชคเซ€ C++ เชฎเชพเชŸเซ‡ เชธเช‚เชธเซเช•เชฐเชฃ, เชœเซ‡ เชญเชพเชทเชพเชจเซ€ เช†เชงเซเชจเชฟเช• เชถเซˆเชฒเซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡.

เชธเซ‹เชฐเซเชธ: linux.org.ru