وبلاگ فربد | Farbod Blog

توی این وبلاگ راجع به پروژه هام صحبت می کنم

آموزش نوشتن اسکریپت تغییر پس زمینه ویندوز با پایتون

  • ۱۳۵۷

سلام دوستان :)

 

امروز قراره با هم نحوه ساخت یک اسکریپت برای تغییر پس زمینه با پایتون رو ببینیم

 

خب چون روش خاصی برای اینکار توی پایتون وجود نداره پس ما میتونیم از Windows API کمک بگیریم

Windows API چیه ؟ Windows API در اصل کلاس ها و متد های آماده ای هست که خود مایکروسافت اونا رو در اختیار برنامه نویس ها قرار داده تا بتونن از اونا برای کنترل و انجام دادن انواع فعالیت ها در زبان های برنامه نویسی مختلف در ویندوز استفاده کنن.

windows API تابعی داره به اسم SystemParametersInfoA که به وسیله ی اون میتونیم تنظیمات مختلف یک یوزر از جمله تصویر پس زمینه شو تغییر بدیم . 

 

خب برای استفاده از Windows API در پایتون میتونیم از کتابخونه ctypes استتفاده کنیم که بطور پیشفرض روی پایتون نصب هست.

 

بریم برای نوشتن اسکریپت

 

سورس کد:

from ctypes import *

picture = "C:\\Users\\Farbod\\Desktop\\wallpaper.jpg".encode()

windll.user32.SystemParametersInfoA(20 , 0 , c_char_p(picture) , 0)

 

خب اول ماژول ctypes رو import کردیم. بعدش متغییری به نام picture درست کردیم و آدرس عکسمون رو از string تبدیل به byte کردیم و داخلش ریختیم.

بعد از اون از تابع SystemParametersInfoA استفاده کردیم. توی ورودی اول عدد 20 رو دادیم یعنی میخوایم عکس پس زمینه رو عوض کنیم ورودی دوم رو 0 دادیم و ورودی سوم رو آدرس عکس رو دادیم ورودی چهارم هم صفر گذاشتیم.

 

فقط یک نکته خیلی مهم اینکه آدرسی که داخل متغییر picture میزارید باید حتما مطلق باشه. مطلق یعنی آدرس کامل باشه یعنی حتی اگر عکستون کنار اسکریپتتون هم بود باید آدرس کامل رو بدید. همونطوری که توی کد بالا میبینین من از درایو C آدرس دادم تا رسیدم به عکس wallpaper.jpg .

 

خب این اسکریپت اصل کار رو انجام میده میتونیم با استفاده از اسکریپت بالا یک کار باحال بکنیم.

 

اسکریپت زیر رو ببینید:

from ctypes import *
from time import sleep

wall1 = "C:\\Users\\Farbod\Desktop\\wallpaper1.jpg".encode()
wall2 = "C:\\Users\\Farbod\\Desktop\\wallpaper2.jpg".encode()
wall3 = "C:\\Users\\Farbod\\Desktop\\wallpaper3.jpg".encode()

while True:
    windll.user32.SystemParametersInfoA(20 , 0 , c_char_p(wall1),0)
    sleep(2)
    windll.user32.SystemParametersInfoA(20 , 0 , c_char_p(wall2),0)
    sleep(2)
    windll.user32.SystemParametersInfoA(20 , 0 , c_char_p(wall3),0)
    sleep(2)
    

 

توی اسکریپت بالا اول متد sleep رو از ماژول time ایمپورت کردیم و بعدش ماژول ctypes رو برای استفاده از Windows API 

 

بعدش سه تا آدرس عکس دادیم برای عوض کردن عکس ها بین اونا 

 

بعدش حلقه بینهایت نوشتیم که هر 2 ثانیه تصویر رو عوض میکنه

 

همینطور که در GIF زیر میبینید تصویر هر دو ثانیه عوض میشه

 
 
امیدوارم براتون مفید بوده باشه D: 
 

  • عالی بود خسته نباشید ممنون از وقتی که گذاشتید
    پاسخ:
    سلام دوست عزیز
    ممنون از همراهی شما
    شاد و پاینده باشید
  • سلام بسیار عالی مطالب فوق العاده
    ارزشمند مفید موفق باشید
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی