• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Program do wpisywania adresów stron www.

VPS Starter Arubacloud
0 głosów
715 wizyt
pytanie zadane 13 marca 2019 w C i C++ przez Drax Użytkownik (630 p.)
edycja 13 marca 2019 przez Drax

Witam. Czy ktoś zna funkcje dzięki, której program będzie mógł wpisywać do przeglądarki strony www wcześniej przygotowane przeze mnie strony . W celu łatwiejszego zrozumienia dam przykład:

Mam plik.txt z 20 stronami www. Mój program pobiera te strony, odnajduje pasek wyszukiwania i następnie wpisuje je tam

P.S. Nie chodzi mi o fstreama żeby mi wypisał do jakiegoś pliku tekstowego tylko żeby wypisał to na zewnątrz np do przeglądarki. Ja wpisuje do codeblocks kompiluje a on wpisuje to do przeglądarki

3
komentarz 13 marca 2019 przez adrian17 Ekspert (344,100 p.)

Przykład Excela ma prostą odpowiedź: nie, nie robisz tego programowo "ustawiając kursor i wciskając przycisk", to byłoby szaleństwo. I nie, nie robisz tego w C++ie, to też byłoby szaleństwo.

Robisz to w języku jak Python, gdzie masz możliwość trywialnego edytowania plików Excela. Na przykład:

from openpyxl import Workbook

excel = Workbook()
arkusz = excel.active

for linia in open("plik.txt"):
	liczba = float(linia)
	arkusz.append([liczba])

excel.save("plik_excela.xlsx")

Albo z czymś jeszcze bardziej wysokopoziomowym:

import pandas as pd  
dane = pd.read_csv('plik.txt', header=None)
dane.to_excel('plik_excela.xlsx')

Podobnie na pytanie o "wpisywanie adresu w przeglądarkę i wciskanie enter" odpowiedź w 99% przypadków brzmi: nie rób tego, to szaleństwo, szczególnie w C++ie. Gdybyś powiedział co konkretnie chcesz zrobić, można doradzić konkretne rozwiązanie. Pobranie pliku lub HTMLa? Zwykły curl lub wget. Proste automatyczne otwarcie strony w przeglądarce? Po prostu w konsoli Windowsa można to zrobić. Otwarcie strony w celu automatycznego zrobienia screenshota? Magia, `chrome --headless --disable-gpu --screenshot https://www.google.com/`. Pełna automatyzacja przeglądarki? Selenium lub jakieś JSowe biblioteki do gadania z headless Chrome'm/FF. I tak dalej. Ale nie C++ i nie "odnajdywanie paska wyszukiwania i wciskanie enter".

Dlatego tak mocno dopytywaliśmy o konkretny cel.

Domyślam się i rozumiem że pewnie obecnie tylko znasz C++a, ale to jednak jest przypadek gdzie C++ jest młotkiem, ale nie wszystko jest gwoździem.

komentarz 13 marca 2019 przez Drax Użytkownik (630 p.)
Dziękuje Panowie za szczegółowe odpowiedzi. Mi głównie chodziło o to, czy za pomocą c++ można coś wypluć na zewnątrz i niekoniecznie żeby to był plik txt.
komentarz 13 marca 2019 przez adrian17 Ekspert (344,100 p.)
Jak najbardziej można (w końcu na przykład wiele gier i przeglądarka na której pisałeś tą odpowiedź były napisane w C++ie), tylko jest duży kanion w złożoności między "pisaniem do pliku" a "zdalne kontrolowanie Excela".

Jeśli chcesz ogólnie porobić coś bardziej, um, "wizualnego" z C++em, to może na przykład SFML? https://www.sfml-dev.org/ Całkiem prosta, zgrabna biblioteka do grafiki, z którą można próbować pisać na przykład gry 2D.

Albo Qt do tworzenia "zwykłych" aplikacji okienkowych?
1
komentarz 13 marca 2019 przez niezalogowany

Przykład Excela ma prostą odpowiedź: nie, nie robisz tego programowo "ustawiając kursor i wciskając przycisk", to byłoby szaleństwo. I nie, nie robisz tego w C++ie, to też byłoby szaleństwo.

Przecież C++ też ma biblioteki od excela i to nawet wygodne...

1
komentarz 13 marca 2019 przez Secrus Nałogowiec (32,880 p.)
Hipcio, ale C++ nie do wszystkiego jest wygodny ;)

1 odpowiedź

–2 głosów
odpowiedź 13 marca 2019 przez DeBos123 Nałogowiec (44,950 p.)

Mógłbyś to zrobić w taki sposób:

#include <iostream>
#include <string>
#include <fstream>
#include <windows.h>

using namespace std;

int main()
{
    ifstream file("plik.txt");
    string a;
    while(getline(file,a)){
        SetCursorPos(100,100);
        INPUT Input={0};
        Input.type=INPUT_MOUSE;
        Input.mi.dwFlags=MOUSEEVENTF_LEFTDOWN;
        ::SendInput(1,&Input,sizeof(INPUT));
        ::ZeroMemory(&Input,sizeof(INPUT));
        Input.type=INPUT_MOUSE;
        Input.mi.dwFlags=MOUSEEVENTF_LEFTUP;
        ::SendInput(1,&Input,sizeof(INPUT));
        keybd_event(VK_RETURN,0x9C,0,0);
        keybd_event(VK_RETURN,0x9C,KEYEVENTF_KEYUP,0);
    }
    return 0;
}

Program dla każdej linijki w pliku "plik.txt":

  • Ustawia kursor na pozycję 100 100,
  • Klika lewy przycisk myszy,
  • Klika enter.

Więc musiałbyś trochę pozmieniać kod i dodać wypisywanie zmiennej.

komentarz 13 marca 2019 przez Drax Użytkownik (630 p.)
Hehe. Dzięki wielkie...ale dokładnie o to "dodanie wypisywania zmiennej" mi chodziło ponieważ resztę mam. :D :D :D
komentarz 13 marca 2019 przez DeBos123 Nałogowiec (44,950 p.)
Wiesz jak wywołać naciśnięcie przycisku no to napisz sobie w pętli wypisanie każdego znaku ze string'a po prostu.

Tu masz kody dla poszczególnych przycisków: https://docs.microsoft.com/en-us/windows/desktop/inputdev/virtual-key-codes
komentarz 13 marca 2019 przez Drax Użytkownik (630 p.)
Spoko, tylko jak z tablicy ASCII wziąć stringa?
komentarz 13 marca 2019 przez DeBos123 Nałogowiec (44,950 p.)

jak z tablicy ASCII wziąć stringa?

https://pl.wikipedia.org/wiki/ASCII 

ASCII – siedmiobitowy system kodowania znaków.

Tu masz tablicę ASCII: http://www.asciitable.com/

Jeżeli sam napisałeś wszystko tylko poza tym wypisaniem zmiennej to powinno ci to zająć dosłownie chwilę.

komentarz 13 marca 2019 przez Drax Użytkownik (630 p.)
Nie wiem jak.
komentarz 13 marca 2019 przez DeBos123 Nałogowiec (44,950 p.)
Napisałem ci jak, dałem ci potrzebne linki, nawet napisałem większość kodu za ciebie.

Oczekujesz, że cały kod za ciebie napiszę?

Jak mi zapłacisz to mogę napisać cały kod za ciebie.
komentarz 13 marca 2019 przez Drax Użytkownik (630 p.)
Brawo. Napisałeś wszystko tylko nie to co trzeba. Uważniej czytaj pytania.
komentarz 13 marca 2019 przez Drax Użytkownik (630 p.)

To co napisałeś jeszcze nie zgadzało się z tym czego potrzebowałem. Jak wspomniałem tą część kodu już miałem:

SetCursorPos( 585, 680 );
mouse_event(MOUSEEVENTF_LEFTDOWN,0 ,0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP,0 ,0, 0, 0);

 

komentarz 13 marca 2019 przez DeBos123 Nałogowiec (44,950 p.)

Mam plik.txt z 20 stronami www. Mój program pobiera te strony, odnajduje pasek wyszukiwania i następnie wpisuje je tam. 

Kod, który ci wysłałem:

  • Pobiera te strony,
  • Przenosi kursor do paska wyszukiwania. 

wszystko tylko nie to co trzeba.

 2 z 3 czynności program wykonuje.

Uważniej czytaj pytania.

Uważniej czytaj własne wypowiedzi i szanuj innych forumowiczów, którzy próbują ci pomóc (to, że nie daję ci gotowego kodu, tylko motywuję cię do samodzielnego rozwiązania problemu to jest właśnie pomoc). 

Podobne pytania

0 głosów
1 odpowiedź 287 wizyt
0 głosów
2 odpowiedzi 491 wizyt
0 głosów
0 odpowiedzi 106 wizyt
pytanie zadane 15 maja 2020 w HTML i CSS przez Damian12345 Bywalec (2,940 p.)

92,452 zapytań

141,262 odpowiedzi

319,085 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...