Tüm Platformlar için Hızlı Uygulama Geliştirme --->    Kitabımız...      Delphi

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 4/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Usb port aç kapa
#1
Merhaba, 
Telefonu bilgisayarın usb portuna takıp şarj etmelerini engellemek için usb portlarını açıp kapatabilen bir uygulama yazmak istiyorum. Amacım programdan izin verilirse usb portu kullanıma açmak verilmezse kapatmak. Konuya nereden başlarım, nasıl yaparım fikrim yok. Konu hakkında bilgilerinizi paylaşırsanız sevinirim.

Teşekkürler
Cevapla
#2
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
burada bir şeyler konuşulmuş ve Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol burada c# kodu paylaşılmış fikir verebilir.

“Do. Or do not. There is no try.”
Cevapla
#3
Bu iş biraz iz sürerek olacak gibi Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol bu adresde register kayıtlarıyla yapılabilir gözüküyor. Ama bilen bir kullanıcı tersinide yapabilir. Sen registry kayıtlarını değiştirdiğinde o da düzeltebilir. Ki bu da daha alt seviye sistem programlamaya götürür. İşletim sistemi böyle bir erişeme izin verir mi ? bunları bilmiyorum.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#4
(25-07-2017, Saat: 09:07)boreas Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlBu iş biraz iz sürerek olacak gibi Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol bu adresde register kayıtlarıyla yapılabilir gözüküyor. Ama  bilen bir kullanıcı tersinide yapabilir. Sen registry kayıtlarını değiştirdiğinde o da düzeltebilir. Ki bu da daha alt seviye sistem programlamaya götürür. İşletim sistemi böyle bir erişeme izin verir mi ? bunları bilmiyorum.

Evet bunu görmüştüm , bundaki tek sorun her ayar değişikliğinde bilgisayarın yeniden başlatılması gerekiyor.
Cevapla
#5
Merhaba,

Cihazınız Androd ise ve Root yetkisi varsa ADB Shell kabuğu üzerindeki komut ile yapabilirsiniz..

- > Usb Şarj Etmeyi Devre Dışı Bırakma
adb shell su -c "echo 0 > /sys/class/power_supply/usb/device/charge"

- > Usb Şarj Etmeyi Aktif Etme
adb shell su -c "echo 0 > /sys/class/power_supply/usb/device/charge"
WWW
Cevapla
#6
(28-07-2017, Saat: 01:47)dicle_gsm Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba,

Cihazınız Androd ise ve Root yetkisi varsa ADB Shell kabuğu üzerindeki komut ile yapabilirsiniz..

- > Usb Şarj Etmeyi Devre Dışı Bırakma
adb shell su -c "echo 0 > /sys/class/power_supply/usb/device/charge"

- > Usb Şarj Etmeyi Aktif Etme
adb shell su -c "echo 0 > /sys/class/power_supply/usb/device/charge"

Yok windows üzerinden kontrol etmem gerekiyor. Sadece telefon engellemeyi düşünmüyorum. Usb ile çalışan tüm cihazları engellemek adına bu tür bir yol arıyorum.
Cevapla
#7
(28-07-2017, Saat: 05:23)Lord_Ares Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(28-07-2017, Saat: 01:47)dicle_gsm Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba,

Cihazınız Androd ise ve Root yetkisi varsa ADB Shell kabuğu üzerindeki komut ile yapabilirsiniz..

- > Usb Şarj Etmeyi Devre Dışı Bırakma
adb shell su -c "echo 0 > /sys/class/power_supply/usb/device/charge"

- > Usb Şarj Etmeyi Aktif Etme
adb shell su -c "echo 0 > /sys/class/power_supply/usb/device/charge"

Yok windows üzerinden kontrol etmem gerekiyor. Sadece telefon engellemeyi düşünmüyorum. Usb ile çalışan tüm cihazları engellemek adına bu tür bir yol arıyorum.

Windows üzerinden de yapabilirsiniz hocam ve root yetkisi olmadan çalışan komutta buldum Smile

- Usb Şarj Deaktif Etme : adb shell dumpsys battery unplug
- Usb Şark Aktif Etme    : adb shell dumpsys battery reset


y310Z0.png

adb.exe burdan indirebilirsiniz : 
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol


Delphi üzerinden Aygıta komut yolllama : 

ZEp9rV.png

Kod:
function IsWinNT: boolean;
var
  OSV: OSVERSIONINFO;
begin
  OSV.dwOSVersionInfoSize := sizeof(osv);
  GetVersionEx(OSV);
  result := OSV.dwPlatformId = VER_PLATFORM_WIN32_NT;
end;
 function Shell(Cmd: string): string;
var
  Buffer: array[0..10096] of Char;
  si: STARTUPINFO;
  sa: SECURITY_ATTRIBUTES;
  sd: SECURITY_DESCRIPTOR;
  pi: PROCESS_INFORMATION;
  newstdin, newstdout, read_stdout, write_stdin: THandle;
  exitcod, bread, avail: Cardinal;
  Str: string;
begin

  Result:= '';
SetCurrentDir(ExtractFilePath(Application.ExeName));
  if IsWinNT then
  begin
    InitializeSecurityDescriptor(@sd, SECURITY_DESCRIPTOR_REVISION);
    SetSecurityDescriptorDacl(@sd, true, nil, false);
    sa.lpSecurityDescriptor := @sd;
  end
  else sa.lpSecurityDescriptor := nil;
  sa.nLength := sizeof(SECURITY_ATTRIBUTES);
  sa.bInheritHandle := TRUE;
  if CreatePipe(newstdin, write_stdin, @sa, 0) then
  begin
    if CreatePipe(read_stdout, newstdout, @sa, 0) then
    begin
      GetStartupInfo(si);
      with si do
      begin
        dwFlags := STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW;
        wShowWindow := SW_HIDE;

        hStdOutput := newstdout;
        hStdError := newstdout;
        hStdInput := newstdin;
      end;
      Fillchar(Buffer, SizeOf(Buffer), 0);
      GetEnvironmentVariable('COMSPEC', @Buffer, SizeOf(Buffer) - 1);
      StrCat(@Buffer,PChar(' /c ' + cmd));
      if CreateProcess(nil, @Buffer, nil, nil, TRUE, CREATE_NEW_CONSOLE, nil, nil, si, pi) then
      begin
        Str:= #13;
        WriteFile(write_stdin,PChar(Str)^,Length(Str),bread,nil);
        repeat
          PeekNamedPipe(read_stdout, @Buffer, SizeOf(Buffer) - 1, @bread, @avail, nil);
          if bread > 0 then
          begin
            Fillchar(Buffer, SizeOf(Buffer), 0);
            ReadFile(read_stdout, Buffer, bread, bread, nil);
            Result:= Result + String(PChar(@Buffer));
          end;
          GetExitCodeProcess(pi.hProcess, exitcod);
        until (exitcod <> STILL_ACTIVE) and (bread = 0);
      end;
      CloseHandle(read_stdout);
      CloseHandle(newstdout);
    end;
    CloseHandle(newstdin);
    CloseHandle(write_stdin);
  end;
  end;
//*********************************************************************************
Function getbeetwen( text, ilk, son:String ): String;
begin
   Delete(Text, 1, pos(ilk, Text) + Length(ilk)-1);
   Result := Copy(Text, 1, Pos(Son, Text)-1);
end;
//****************************************************************************
procedure TForm1.readinfo;
var  devicetype , imei, chk : String;
begin
txtlog('Reading Info............');
  txtlog(AnsiUpperCase(Trim('Manufacturer  :  '+(Shell('adb shell getprop ro.product.brand')))));
  txtlog(AnsiUpperCase(Trim('Hardware  :  '+(Shell('adb shell getprop ro.hardware')))));
  txtlog(AnsiUpperCase(Trim('Model  :  '+(Shell('adb shell getprop ro.product.model')))));
  txtlog(AnsiUpperCase(Trim('BaseBand  :  '+(Shell('adb shell getprop ro.boot.baseband')))));
  txtlog(AnsiUpperCase(Trim('Board  :  '+(Shell('adb shell getprop ro.product.board')))));
  txtlog(AnsiUpperCase(Trim('Version  :  '+(Shell('adb shell getprop ro.build.version.release')))));
  chk:=Shell('adb shell dumpsys iphonesubinfo');
  devicetype:=getbeetwen(chk, 'Type =', 'Device');
  imei:=copy(chk,62,15);
  txtlog(AnsiUpperCase(Trim('Device Type : '+devicetype)));
  txtlog(AnsiUpperCase(Trim('Country Code  :  '+(Shell('adb shell getprop ro.build.target_country')))));
  txtlog(AnsiUpperCase(Trim('Connection Mode  :  '+(Shell('adb shell getprop sys.usb.config')))));
  txtlog(AnsiUpperCase(Trim('IMEI : '+imei)));
end;

procedure TForm1.txtlog(s: string);
begin
Memo1.Lines.Add(s);
end;
//*********************************************************************************
procedure TForm1.Button1Click(Sender: TObject);
begin
readinfo;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  readinfo;
  Shell('adb shell dumpsys battery reset');
  txtlog('Usb Şarj Aktif Edildi !');

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  readinfo;
  Shell('adb shell dumpsys battery unplug');
  txtlog('Usb Şarj Deaktif Edildi !');
end;

end.


Proje Linki : Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol


Not : Harici adb.exe'si de proje klasörünün içindedir.
WWW
Cevapla
#8
Vallahi sözün bittiği yerdeyim Smile)) Çok teşekkür ediyorum hemen deneyeceğim. Dikkatimi çeken AndroidSdk nın sanırım kurulu olmasını isteyebilir. Bir an önce denemeliyim meraklandım Big Grin
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
Question Uzak Bir Bilgisayar İçin Port Ekleme? hyperxman 21 824 22-11-2017, Saat: 00:03
Son Yorum: nguzeller
  Uzak ağdan port açmadan sunucuya erişmek esistem 27 1.079 08-11-2017, Saat: 20:25
Son Yorum: nguzeller
  2 program aynı port kullanabilir mi? Shou 9 552 15-01-2017, Saat: 01:30
Son Yorum: Tuğrul HELVACI



Konuyu Okuyanlar: 1 Ziyaretçi