virtual_display_1.rs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. use std::io::{self, Read};
  2. #[cfg(windows)]
  3. use virtual_display;
  4. #[cfg(windows)]
  5. fn prompt_input() -> u8 {
  6. println!("Press key execute:");
  7. println!(" 1. 'q' 1. quit");
  8. println!(" 2. 'i' 2. install or update driver");
  9. println!(" 3. 'u' 3. uninstall driver");
  10. println!(" 4. 'c' 4. create device");
  11. println!(" 5. 'd' 5. destroy device");
  12. println!(" 6. '1' 6. plug in monitor 0,1,2");
  13. println!(" 7. '4' 7. plug out monitor 0,1,2");
  14. io::stdin()
  15. .bytes()
  16. .next()
  17. .and_then(|result| result.ok())
  18. .unwrap_or(0)
  19. }
  20. #[cfg(windows)]
  21. fn plug_in(monitor_index: u32) {
  22. println!("Plug in monitor begin");
  23. if let Err(e) = virtual_display::plug_in_monitor(monitor_index as _) {
  24. println!("{}", e);
  25. } else {
  26. println!("Plug in monitor done");
  27. }
  28. }
  29. #[cfg(windows)]
  30. fn plug_out(monitor_index: u32) {
  31. println!("Plug out monitor begin");
  32. if let Err(e) = virtual_display::plug_out_monitor(monitor_index as _) {
  33. println!("{}", e);
  34. } else {
  35. println!("Plug out monitor done");
  36. }
  37. }
  38. #[cfg(windows)]
  39. fn main() {
  40. loop {
  41. let chr = prompt_input();
  42. match chr as char {
  43. 'q' => break,
  44. 'i' => {
  45. println!("Install or update driver begin");
  46. let mut reboot_required = false;
  47. if let Err(e) = virtual_display::install_update_driver(&mut reboot_required) {
  48. println!("{}", e);
  49. } else {
  50. println!(
  51. "Install or update driver done, reboot is {} required",
  52. if reboot_required { "" } else { "not" }
  53. );
  54. }
  55. }
  56. 'u' => {
  57. println!("Uninstall driver begin");
  58. let mut reboot_required = false;
  59. if let Err(e) = virtual_display::uninstall_driver(&mut reboot_required) {
  60. println!("{}", e);
  61. } else {
  62. println!(
  63. "Uninstall driver done, reboot is {} required",
  64. if reboot_required { "" } else { "not" }
  65. );
  66. }
  67. }
  68. 'c' => {
  69. println!("Create device begin");
  70. if virtual_display::is_device_created() {
  71. println!("Device created before");
  72. continue;
  73. }
  74. if let Err(e) = virtual_display::create_device() {
  75. println!("{}", e);
  76. } else {
  77. println!("Create device done");
  78. }
  79. }
  80. 'd' => {
  81. println!("Close device begin");
  82. virtual_display::close_device();
  83. println!("Close device done");
  84. }
  85. '1' => plug_in(0),
  86. '2' => plug_in(1),
  87. '3' => plug_in(2),
  88. '4' => plug_out(0),
  89. '5' => plug_out(1),
  90. '6' => plug_out(2),
  91. _ => {}
  92. }
  93. }
  94. }
  95. #[cfg(not(windows))]
  96. fn main() {}