Windows güncelmi degilmi kontrol etmek.

Forumla ilgili sorularınızı buraya sorabilirsiniz.
Cevapla
saygıner
Üye
Mesajlar: 9
Kayıt: 11 Ağu 2014 01:41

Windows güncelmi degilmi kontrol etmek.

Mesaj gönderen saygıner » 14 Ağu 2014 02:27

Windows güncellemeleri varmı yokmu bunu nasıl bir timerle 10 dk bir kontrol edip labele yazdırabilirim.
Bu konuda bilgisi olan varmı.

Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1301
Kayıt: 07 May 2009 09:42
Konum: İstanbul
İletişim:

Re: Windows güncelmi degilmi kontrol etmek.

Mesaj gönderen SimaWB » 14 Ağu 2014 03:39

Windows Update Agent API kullanarak bunu yapmak mümkün.

Aşağıdaki kod; bulunan güncellemeleri Memo1 içine yazar:

Kod: Tümünü seç

procedure  TForm1.Button1Click(Sender: TObject);
var
  updateSession        : OleVariant;
  updateSearcher       : OleVariant;
  updateSearchResult   : OleVariant;
  updateEntry          : OleVariant;
  UpdateCollection     : OleVariant;
  oEnum                : IEnumvariant;
  iValue               : LongWord;
begin
  updateSession:= CreateOleObject('Microsoft.Update.Session');
  updateSearcher := updateSession.CreateUpdateSearcher;
  
  updateSearchResult:= updateSearcher.Search(Format('IsInstalled = 0 and Type=%s',[QuotedStr('Software')]));
  UpdateCollection  := updateSearchResult.Updates;
  oEnum         := IUnknown(UpdateCollection._NewEnum) as IEnumVariant;
  while oEnum.Next(1, updateEntry, iValue) = 0 do
  begin
    Memo1.Lines.Add(updateEntry.Title);
    updateEntry:=Unassigned;
  end;
end;
Bilgisayarda daha önceden yapılmış güncellemeleri listelemek istersen IsInstalled = 1 yapıp kullanırsın.

Güncellemeleri listelemeyip, sadece güncelleme var mı yok mu kontrolü yapmak istersen:

Kod: Tümünü seç

function GuncellemeVarMi: boolean;
var
  updateSession        : OleVariant;
  updateSearcher       : OleVariant;
  updateSearchResult   : OleVariant;
begin
  updateSession:= CreateOleObject('Microsoft.Update.Session');
  updateSearcher := updateSession.CreateUpdateSearcher;  
  updateSearchResult:= updateSearcher.Search(Format('IsInstalled = 0 and Type=%s',[QuotedStr('Software')]));
  Result := updateSearchResult.Updates.Count > 0;
end;
There's no place like 127.0.0.1

saygıner
Üye
Mesajlar: 9
Kayıt: 11 Ağu 2014 01:41

Re: Windows güncelmi degilmi kontrol etmek.

Mesaj gönderen saygıner » 14 Ağu 2014 03:46

Güncellemeleri listelemeyip, sadece güncelleme var mı yok mu bunu labele nasıl yazdırabilirim , bu fonsiyonu kullanarak
ayrıca hata veriyor.
[Error] Unit1.pas(34): Undeclared identifier: 'IEnumvariant'

saygıner
Üye
Mesajlar: 9
Kayıt: 11 Ağu 2014 01:41

Re: Windows güncelmi degilmi kontrol etmek.

Mesaj gönderen saygıner » 14 Ağu 2014 03:57

dostum sadece güncelleme varmı yokmu o fonsiyonu çalıştıramadım labelde nasıl gösterecem. teşekkürler yardımın için

Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1301
Kayıt: 07 May 2009 09:42
Konum: İstanbul
İletişim:

Re: Windows güncelmi degilmi kontrol etmek.

Mesaj gönderen SimaWB » 14 Ağu 2014 04:00

Kusura bakmayın ama biraz da siz gayret gösterseniz. Vakit ayırıp size burada yardımcı olmaya çalışanlara haksızlık ediyorsunuz :!:

Size Boolean değer döndüren bir fonksiyon yazmışım (Boolean ne demek onu bildiğinizi varsayıyorum) ve bunun sonucunda bir label'a "var" yada "yok" nasıl yazdırırım diye soruyorsanız; Windows Update Agent API kullanmayı falan unutun. Öncelikle güzel bir Delphi kitabı alıp baştan sona okuyun lütfen...

Bu bağlamda biraz araştırma ile IEnumvariant ile ilgili sorunu da çözebileceğinizi düşünüyorum.
There's no place like 127.0.0.1

saygıner
Üye
Mesajlar: 9
Kayıt: 11 Ağu 2014 01:41

Re: Windows güncelmi degilmi kontrol etmek.

Mesaj gönderen saygıner » 14 Ağu 2014 04:07

çözdüm teşekkürler saol yardımın için.

Cevapla