28-04-2018, Saat: 01:48
(28-04-2018, Saat: 01:42)seci20 Adlı Kullanıcıdan Alıntı:şşşş o benim idolüm(28-04-2018, Saat: 00:06)mrmarman Adlı Kullanıcıdan Alıntı: Bendeki Note4 için Open işlemi başarılı oldu.
Bence sizin cihazı algılama şeklinizi değiştirmeniz lazım.
Sorun şu satırda.
Kod: (Select All)
USBPORT:= CreateFile('\\?\USB\VID_0FCE&PID_ADDE&REV_0100{2AEB0243-6A6E-486B-82FC-D815F6B97006}', GENERIC_WRITE or GENERIC_READ,
Sizin için bir örnek hazırladım.
(1) Registry Class GUID içinden cihazların listesini çektim.
(2) Oradan bir ListBox'a atanmasını sağladım.
(3) Seçili olan cihazınızı USB OpenDevice fonksiyonunu uyguladım.
Bu microsoft linkinden GUID tanımlarının açılımlarını inceleyebilirsiniz.
Buna bir KickStart diyelim. Gerisi size kalmış.
Forma bir tane TListBox ekleyin iki de Button aşağıdakileri uygulayın.
Ek bilgi: cihazları ListBox'a alma sırasında birer birer OpenDevice yapın, FALSE dönenleri listeye almayın. Böylece liste bağlantısı gerçekleşmiş cihazlardan oluşacaktır.
Başarılar.
Procedure CihazListesiAl( strGUID:String; Bilgiler:TStrings ); Const BaslaKEY = '\SYSTEM\ControlSet001\Control\Class\'; Var Reg : TRegistry; strKey, strWpdDevicePnPID : String; Liste : TStringList; begin Reg := TRegistry.Create; Try Reg.RootKey := HKEY_LOCAL_MACHINE; strKey := BaslaKEY + strGUID; if Reg.OpenKeyReadonly( strKey ) then begin Liste := TStringList.Create; Try Reg.GetKeyNames( Liste ); while Liste.Count > 0 do begin // Tekrar bir önceki, üst ağaç dalına dönüyoruz... Reg.OpenKeyReadonly( strKey ); if Reg.OpenKeyReadOnly( Liste[0] ) then begin if Reg.OpenKeyReadOnly('DeviceData') then begin strWpdDevicePnPID := Reg.ReadString('WpdDevicePnPID'); if Trim(strWpdDevicePnPID) <> '' then Bilgiler.Add( Format('%s', [strWpdDevicePnPID]) ); end; end; Liste.Delete(0); end; Finally Liste.Free; End; end; Finally Reg.Free; End; end; var USBPORT : THandle = INVALID_HANDLE_VALUE; Function USBOpenDriver( strDev: String ):boolean; begin USBPORT:= CreateFile( PChar(strDev), GENERIC_WRITE or GENERIC_READ, FILE_SHARE_WRITE or FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_FLAG_OVERLAPPED OR FILE_ATTRIBUTE_NORMAL, 0 ); USBOpenDriver := USBPORT <> INVALID_HANDLE_VALUE; if USBPORT = INVALID_HANDLE_VALUE then // error at open port begin result:=false; end else result:=true; end; Function USBCloseDriver:boolean; begin USBCloseDriver := CloseHandle(USBPORT); USBPORT := INVALID_HANDLE_VALUE; end; procedure TForm1.BitBtn2Click(Sender: TObject); begin if ListBox1.ItemIndex < 0 then Exit; if USBOpenDriver( ListBox1.Items[ListBox1.ItemIndex] ) then ShowMessage('port açıldı...') else ShowMessage('port sorun oldu açılamadı...') end; procedure TForm1.BitBtn1Click(Sender: TObject); begin CihazListesiAl( '{eec5ad98-8080-425f-922a-dabf3de3f69a}', ListBox1.Items ); end;
hocam siz elleri öpülesi bir insansınız çok çok teşekkür ederim...