C# źródło strony (opera) do własnego edytora


(Grzelix) #1

Chciałem napisać prosty programik i mam problem z przekazaniem źródła strony z opery do aplikacji.

W aplikacji jest RichTextBox i chcę zrobić tak, że po wybraniu opcji pokaż źródło otwiera się moja aplikacja i wyświetla kod strony.

Otworzenie aplikacji to nie problem tylko nie wiem jak dostać się do kodu strony (prawdopodbnie jest w schowku)

Zapewne jest to prosta sprawa ale nie mogę nic znaleźć co by mi pomogło


(Tomek Matz) #2

Nie wydaje mi się, żeby to było takie proste jak mówisz. Jeśli dobrze zrozumiałem to chcesz, żeby po naciśnięciu przycisku "Pokaź źródło" w Operze otworzył się Twój program z kodem aktualnie wybranej strony? Jeśli tak to żeby coś takiego zrobić musiałbyś napisać jakiś mały plugin do Opery, który reagowałby na naciśnięcie tego przycisku (o ile coś takiego jest możliwe), tzn. plugin ten przeciążałby domyślną reakcję na przycisk Pokaż źródło. Poza tym pierwsze słyszę, żeby kod źródłowy strony wrzucany był do schowka. Wprawdzie z Opery nie korzystam, ale założę się, że nic takiego nie ma miejsca. Ale nawet gdyby był wrzucany to i tak musiałbyś wiedzieć kiedy przycisk został wciśnięty, więc plugin i tak wydaje się koniecznością.

Nie możesz zrobić tak, że w tej swojej aplikacji umieścisz textbox, do którego będziesz przekazywał URL strony oraz przycisk "Pokaż źródło"? Po naciśnięciu przycisku aplikacja pobierze kod strony i wyświetli w kontrolce richtextbox. Moim zdaniem najlepsze rozwiązanie. Żeby to zrobić możesz skorzystać z klasy WebClient.


(Grzelix) #3

żródło nie ma się otwierać wewnątrz opery tylko ustawiam program który ma się uruchomić.

Problem jest w tym że nie wiem jak odebrać strumień danych z opery (sprawdziłem już, że nie jest to schowek).

Jeszcze dla wyjaśnienia: można w operze ustawić że pokaż źródło otwiera się w notatniku czyli po kliknięciu uruchamia się notatnik z źródłem obecnie przeglądanej strony.

Tak mam wyglądać mój program tylko nie wiem jak dostać się do tych danych.


(Tomek Matz) #4

OK, rozumiem. Spójrz na ten link: http://malektips.com/opera-view-html-source-external-program.html. Przy podawanej ścieżce do aplikacji notepad.exe dodano parametr %s. Być może ten parametr to właśnie kod strony. Spróbuj zrobić coś analogicznego.

Później w swojej aplikacji odczytasz tą wartość za pomocą takiego kodu:

string[] args = Environment.GetCommandLineArgs();


foreach(string arg in args){

// do stuff

}

A przynajmniej powinieneś odczytać. Kod niesprawdzony, a źródło kodu to: http://www.howtogeek.com/howto/programming/get-command-line-arguments-in-a-windows-forms-application/.

-- Dodane 07.11.2010 (N) 17:11 --

Zainstalowałem operę i sprawdziłem, czy to zadziała. I o dziwo działa z tym, że opera nie przekazuje jako parametr kodu strony, a jedynie ścieżkę do pliku, w którym ten kod strony się znajduje. Ma to sens biorąc pod uwagę fakt, że wszystkie strony są zapisywane do plików (a poza tym jako parametr notepad można podawać tylko ścieżkę do pliku). Jeśli chodzi o to %s, które używane jest przy notepad.exe to nie trzeba tego używać (I szczerze powiedziawszy nie wiem po co to jest).

Więcej szczegółów o metodzie Environment.GetCommandLineArgs można znaleźć pod tym linkiem http://msdn.microsoft.com/en-us/library/system.environment.getcommandlineargs.aspx. Jak widać pierwszy parametr to ścieżka do pliku wykonywalnego danej aplikacji. Drugi parametr to będzie właśnie ścieżka pliku z kodem HTML strony.