Advertisement
Guest User

Untitled

a guest
Jul 21st, 2017
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.77 KB | None | 0 0
  1. // In cargo.toml:
  2. /*
  3.  
  4. [dependencies]
  5. winapi = "0.2.8"
  6. ole32-sys = "0.2.0"
  7. shell32-sys = "0.1.1"
  8. uuid-sys = "0.1.1"
  9. widestring = "0.2.2"
  10. */
  11.  
  12. extern crate shell32;
  13. extern crate winapi;
  14. extern crate uuid;
  15. extern crate widestring;
  16. extern crate ole32;
  17. use std::ptr;
  18. use widestring::WideCString;
  19.  
  20. fn get_downloads_directory_windows() -> Option<String> {
  21. unsafe {
  22. let mut pname : winapi::LPWSTR = ptr::null_mut();
  23. let hresult = shell32::SHGetKnownFolderPath(&uuid::FOLDERID_Downloads, 0, ptr::null_mut(), &mut pname);
  24. if hresult == winapi::S_OK {
  25. let sys_downloads_cs = WideCString::from_ptr_str(pname);
  26. ole32::CoTaskMemFree(pname as winapi::LPVOID);
  27. Some(sys_downloads_cs.to_string_lossy())
  28. }
  29. else { None }
  30. }
  31. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement